仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 908|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之初学触发器

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:34:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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"命令,注意启动者应具有管理员权限。
兰色精灵 该用户已被删除
沙发
发表于 2015-1-19 16:34:09 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
山那边是海 该用户已被删除
板凳
发表于 2015-1-27 17:20:20 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
透明 该用户已被删除
地板
发表于 2015-2-5 10:31:17 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
爱飞 该用户已被删除
5#
发表于 2015-2-11 09:32:02 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
只想知道 该用户已被删除
6#
发表于 2015-3-2 09:59:59 | 只看该作者
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
活着的死人 该用户已被删除
7#
发表于 2015-3-11 03:11:35 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
蒙在股里 该用户已被删除
8#
发表于 2015-3-17 19:44:33 | 只看该作者
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
若相依 该用户已被删除
9#
发表于 2015-3-24 23:00:31 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 19:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表