触发器before和after区别 |
您所在的位置:网站首页 › before跟after的运用 › 触发器before和after区别 |
触发器before和after区别
创建触发器时,在before和after的选择上,有些区分,下面是一个实例,希望对你有所启发 1、建立一个通信录数据库,要求需要有以下三个表: lxrenb(联系人表)其字段为(联系人编号、姓名、联系电话、家庭地址), thjlb(通话记录表)其字段为(通话记录编号、联系人编号、通话开始时间、通知结束时间、通话类别、通话状态), dxjlb(短信记录表)其字段为(短信记录编号、联系人编号、接发时间、短信内容、短信类别)。 数据库名为:TXLSJK。字段名以及字段数据类型可自拟。 2、在联系人表中插入以下5条记录: (1,董小姐,123456789,河南洛阳市爱情路521号) 3、在通话记录表中插入以下一条记录: (1,1,当前系统时间,当前系统时间,语音通话,1) 4、在短信记录表中插入以下一条记录: (1,1,当前系统时间,你的爱情已到请速来领取,1) 5、在联系人表上建立一个触发器,当删除联系人时,删除该联系人的通话记录和短信记录 #首先建好数据库和表,记得表之间要有外键约束 CREATE DATABASE TXLSJK DEFAULT CHARACTER SET ='utf8'; DROP TABLE IF EXISTS lxrenb; CREATE TABLE lxrenb( lid INT(10) AUTO_INCREMENT PRIMARY KEY, lname VARCHAR(20), lnum VARCHAR(20), laddress VARCHAR(20) ); DROP TABLE IF EXISTS thjlb; CREATE TABLE thjlb( tid INT(10) AUTO_INCREMENT, tlid INT(10), tbegin DATETIME, tend DATETIME, tcategory VARCHAR(20), tstate VARCHAR(20), PRIMARY KEY(tid), FOREIGN KEY (tlid) REFERENCES lxrenb(lid) ); DROP TABLE IF EXISTS dxjlb; CREATE TABLE dxjlb( did INT(10) AUTO_INCREMENT PRIMARY KEY, dlid INT(10), dtime DATE, dtext VARCHAR(20), dcategory VARCHAR(20), FOREIGN KEY (dlid) REFERENCES lxrenb(lid) );#插入各表数据 INSERT INTO lxrenb VALUES(1,'董小姐','123456789','河南洛阳市爱情路521号'); INSERT INTO thjlb VALUES(1,1,NOW(),NOW(),'语音通话','1'); INSERT INTO dxjlb VALUES(1,1,CURDATE(),'你的爱情已到请速来领取','1');
#如果选用after创建触发器 DROP TRIGGER IF EXISTS dropinformation; DELIMITER $$ CREATE TRIGGER dropinformation AFTER DELETE ON lxrenb FOR EACH ROW BEGIN DELETE FROM thjlb WHERE tlid=old.lid; DELETE FROM dxjlb WHERE dlid=old.lid; END $$ DELIMITER ;#测试,删除联系人董小姐 DELETE FROM lxrenb WHERE lid=1;#会报错误 这个错误是因为:通信记录表和短信记录表里面有外键约束,即:想要从联系人表里面删除联系人董小姐,必须先删除通信记录表和短信记录表里面有关董小姐的信息,所以在删除联系人之前,必须先删除通信记录表和短信记录表里面的信息,所以要用before #选用before,创建触发器 DROP TRIGGER IF EXISTS dropinformation; DELIMITER $$ CREATE TRIGGER dropinformation BEFORE DELETE ON lxrenb FOR EACH ROW BEGIN DELETE FROM thjlb WHERE tlid=old.lid; DELETE FROM dxjlb WHERE dlid=old.lid; END $$ DELIMITER ;#测试,删除联系人董小姐 DELETE FROM lxrenb WHERE lid=1;
以上便是用一个示例展示了创建触发器时,选用before与after的区别。 一般来说,创建触发器时,用before比after更常见些。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |