|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
线上或者测试环境经常出现的误操作总是让DBA同学那么闹心。初学|触发器
这里只盘算解说四部分了,也就最复杂、最经常使用的四部分。
1、触发器。
界说:作甚触发器?在SQLServer内里也就是对某一个表的必定的操纵,触发某种前提,从而实行的一段程序。触发器是一个特别的存储历程。
罕见的触发器有三种:分离使用于Insert,Update,Delete事务。(SQLServer2000界说了新的触发器,这里不提)
我为何要利用触发器?好比,这么两个表:
CreateTableStudent(--先生表
StudentIDintprimarykey,--学号
....
)
CreateTableBorrowRecord(--先生借书纪录表
BorrowRecordintidentity(1,1),--流水号
StudentIDint,--学号
BorrowDatedatetime,--借出工夫
ReturnDAteDatetime,--偿还工夫
...
)
用到的功效有:
1.假如我变动了先生的学号,我但愿他的借书纪录仍旧与这个先生相干(也就是同时变动借书纪录表的学号);
2.假如该先生已卒业,我但愿删除他的学号的同时,也删除它的借书纪录。
等等。
这时候候能够用到触发器。关于1,创立一个Update触发器:
CreateTriggertruStudent
OnStudent
forUpdate
As
ifUpdate(StudentID)
begin
UpdateBorrowRecord
SetStudentID=i.StudentID
FromBorrowRecordbr,Deletedd,Insertedi
Wherebr.StudentID=d.StudentID
end
了解触发器内里的两个一时的表:Deleted,Inserted。注重Deleted与Inserted分离暗示触发事务的表“旧的一笔记录”和“新的一笔记录”。
一个Update的历程能够看做为:天生新的纪录到Inserted表,复制旧的纪录到Deleted表,然后删除Student纪录并写进新记录。
关于2,创立一个Delete触发器
CreatetriggertrdStudent
OnStudent
forDelete
As
DeleteBorrowRecord
FromBorrowRecordbr,Deltedd
Wherebr.StudentID=d.StudentID
从这两个例子我们能够看到了触发器的关头:A.2个一时的表;B.触发机制。
这里我们只解说最复杂的触发器。庞大的容后申明。
现实上,我不勉励利用触发器。触发器的初始计划头脑,已被“级联”所替换
在Windows中MySQL以服务形式存在,在使用前应确保此服务已经启动,未启动可用netstartmysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqldstart"命令,注意启动者应具有管理员权限。 |
|