前段时间学习到sql中的触发器,暂以自己最熟悉的mysql为例。
新建两个表:borrowrecord,student。没错,又是最土的学生借书的例子。
CREATE TABLE `borrowrecord` (
`BorrowRecord` int(11) DEFAULT NULL,
`StudentID` int(11) DEFAULT NULL,
`BorrowDate` int(11) DEFAULT NULL,
`ReturnDAte` int(11) DEFAULT NULL
)
CREATE TABLE `student` (
`StudentID` int(11) NOT NULL,
`name` varchar(3) DEFAULT NULL,
PRIMARY KEY (`StudentID`)
)
以上是我从转储的sql文件中复制出来的。
现在主要就是搞一个修改student表中的StudentID时,borrowrecord中的StudentID也会同时改变。
即与update相关 的触发器:
CREATE TRIGGER
st1BEFORE UPDATE ON
student
FOR EACH ROW BEGIN UPDATE
borrowrecord
SET StudentID=new.StudentID where StudentID=old.StudentID;
END
然后如果要在删除student中的记录的同时也删除borrowrecord中的对应sutdentID记录时,即创建触发器:
CREATE TRIGGER
st2
BEFORE DELETE ON
student
FOR EACH ROW BEGIN DELETE FROM
borrowrecord
where StudentID=old.StudentID;
END
那么把insert的触发器也说一下好了,虽然这个例子里面貌似用不到:
CREATE TRIGGER st3
BEFORE INSERT ON student FOR EACH ROW
BEGIN
INSERT INTO borrowrecord(StudentID) VALUES(new.StudentID);
END
如果要查看现有触发器可以通过以下语句进行查询:
SELECT * From information_schema.`TRIGGERS`;