注册 登录
编程论坛 SQL Server论坛

[求助]触发器

fuliping 发布于 2007-04-05 17:55, 561 次点击
请各位高手帮忙看一下,非常急~~在线等~~
下面的这段代码是什么意思?
USE cpxs
IF EXISTS (Select name From sysobjects
where xtype='TR' AND name='xscp_tri')
Drop trigger xscp_tri
Go
Create Trigger xscp_tri On dbo.cpxs
For Insert,Update
AS
Begin
IF((Select ins.cpbh From Inserted ins) NOT IN (Select cpbh From cp)) //ins是什么?
RollBack
End
关于这段代码的解释,越详细越好,因为俺绝对是菜鸟中的菜鸟~~
4 回复
#2
xiyou4192007-04-05 20:22
先检查数据库中是否存在名为xscp_tri的触发器,存在就删了
在表cpxs上创建更新(包括插入)触发器,如果满足了IF后的条件就回滚
至于你说的ins 就是Inserted的别名.
以后这种问题最好看SQL帮助~~~~~~~~~~~~~
#3
fuliping2007-04-05 21:25
SQL 的帮助我不是很懂得看~~
不好意思,又惹众怒鸟,,,,
#4
xiyou4192007-04-05 22:39
呵呵,不是惹众怒,只是自己看学来的东西远比听别人说的记得牢~~~~~~~~~~
#5
棉花糖ONE2007-04-05 23:32
触发器是在执行dml语句的时候会被触发,触发器的种类有insert,update,delete ,执行对应的dml语句的时候就会触发与它对应的触发器,编写触发器中最重要的是用到两个表inserted和deleted表,触发器看起来是个很好的东西,但是它很影响性能.而且编写不但还会造成循环出发,具体最多几重我也不记得了.
if update可以定义在列上的触发器,但是要注意不论是对那个列进行insert还是update操作都会触发这个行为.
最好在定义触发器的开头加上
if @@rowcount=0
rollback
避免没有语句被update或delete的时候,锁定事务的时间过长
1