データ準備:
作成 、テーブルの従業員(num個のint(50 )、 D_ID INT(50 )、 名前のVARCHAR(50 )、 年齢INT(50 )、 セックスVARCHAR(50 )、 homeadd VARCHAR(50 ) );
挿入 に従業員の値(1、1001、"zhangsan ' 26は、' のNaN 3 ' ' 北京' ); INSERT INTO従業員値(2、1001、' リシ' 24、' NV ' ' 湖南省' ); INSERT INTO従業員値(3、1002、' wangwu '、25、' NaN 3を'、' 江蘇' ); インサート への従業員の値が(4、1004、' ARIC '、15、' ナン'、' yingguo ' )。
選択 * から社員。 作成 、テーブルの部門を(D_ID INT(50 )、 d_nameのVARCHAR(50 )、 functioneのVARCHAR(50 ) アドレスVARCHAR(50 ) )。
挿入 に部門値(1001、' keyanbu '、' yanfachanpin '、' 3lou5hao ' )。 インサート に部門値(1002、' shengchanbu '、' shengchanchanp '、' 5louyiceng ' )。 挿入 に部門値(1003、' xiaoshoubu '、' cehuaxiaoshou '、' 1louxiaoshoudating ' )。
選択 * から部門。
従業員から*を選択します。
部門から*を選択します。
================================================== ========================
作成 トリガーの前にトリガー名を| トリガイベント後 のテーブル名のための各行が 、文を実行 ------------------------------- --------------------------------------------- DELIMITER && 作成 トリガートリガーを前の名前です| トリガイベント後 のテーブル名のための各行 始まる 文リストの実行 終了 && 、区切り文字を トリガイベントがINSERT、を含む、トリガ条件での更新、削除、 テーブル名は、テーブルのトリガ・イベント操作の名前を参照します。
テーブルを作成します。
作成 テーブル trigger_time(EXEC_TIMEのVARCHAR(50 ) )。trigger_timeから*を選択します。
----------選択)(今;
=================================================
トリガーを作成します。
作成 トリガ前dept_trig1をインサート 上の部門のための各行インサート に trigger_time 値()(今)。
===========================================
、デモンストレーション最初のレコードを削除し、それに追加するには:
削除 から部門D_ID = 1003 ;
=========================================
単に削除されたレコードを追加します。
insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating');
===================================================================
在department表insert时,触发器会被触发,我们查看下:
select * from trigger_time;
===========================================================
==========================================================
示例02:
创建第二个演示示例用的时间表:
create table trigger_time1 ( exec_time varchar(50) ); select * from trigger_time1;
==================================================================
创建第二个触发器:
delimiter && create trigger dept_trig2 after delete on department for each row begin insert into trigger_time1 values ( now() ); insert into trigger_time values ( now() ); end && delimi
================================================
执行删除语句:
delete from department where d_id = 1003;
==========================================
查看被删除记录的表以及2个时间表:
select * from department; select * from trigger_time; select * from trigger_time1;
=================================================================================================
查看触发器
1、查看数据库中所有触发器的信息:
show triggers;
========================================================================
2、在triggers表中查看触发器信息
mysql中所有触发器的定义都存在information_schema数据库下的triggers表中,查询triggers表,可以查询数据库中所有触发器的详细信息
select * from information_schema.triggers; /*查询所有*/
select * from information_schema.triggers where trigger_name = 'dept_trig1'; /*单个指定查询*/
注意:在激活触发器时,对触发器中的执行语句存在一些限制。而且触发器有问题,会阻止程序向下执行,而且数据不能回滚。
select * from information_schema.triggers; /*查询所有*/ select * from information_schema.triggers where trigger_name = 'dept_trig1'; select * from information_schema.triggers where trigger_name = 'dept_trig2';
==================================================
3、删除触发器
drop trigger 触发器名;
select * from information_schema.triggers; drop trigger dept_trig1; drop trigger dept_trig2;