仓酷云
标题:
MSSQL网站制作之初学触发器
[打印本页]
作者:
老尸
时间:
2015-1-16 22:34
标题:
MSSQL网站制作之初学触发器
线上或者测试环境经常出现的误操作总是让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"命令,注意启动者应具有管理员权限。
作者:
兰色精灵
时间:
2015-1-19 16:34
你可以简单地认为适合的就是好,不适合就是不好。
作者:
山那边是海
时间:
2015-1-27 17:20
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
作者:
透明
时间:
2015-2-5 10:31
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
作者:
爱飞
时间:
2015-2-11 09:32
你可以简单地认为适合的就是好,不适合就是不好。
作者:
只想知道
时间:
2015-3-2 09:59
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
作者:
活着的死人
时间:
2015-3-11 03:11
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
作者:
蒙在股里
时间:
2015-3-17 19:44
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
作者:
若相依
时间:
2015-3-24 23:00
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2