SQL 触发器-触发器更多语法

作者:leen 来源:千一网络(原创) 日期:2006-5-11

INSTEAD OF
执行触发器语句,但不执行触发触发器的 SQL 语句,比如试图删除一条记录时,将执行触发器指定的语句,此时不再执行 delete 语句。例:
create trigger f
on tbl
instead of delete
as
    insert into Logs...

IF UPDATE(列名)
检查是否更新了某一列,用于 insert 或 update,不能用于 delete。例:
create trigger f
on tbl
for update
as
    if update(status) or update(title)
        sql_statement --更新了 status 或 title 列

inserted、deleted
这是两个虚拟表,inserted 保存的是 insert 或 update 之后所影响的记录形成的表,deleted 保存的是 delete 或 update 之前所影响的记录形成的表。例:
create trigger tbl_delete
on tbl
for delete
as
    declare @title varchar(200)
    select @title=title from deleted
    insert into Logs(logContent) values('删除了 title 为:' + title + '的记录')
说明:如果向 inserted 或 deleted 虚拟表中取字段类型为 text、image 的字段值时,所取得的值将会是 null。

你前面那位网友看了:淘宝 + 搜索与百度 + 有啊 二虎争斗 将势均力敌

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
  • 1 楼:评论
    问一个问题:有一个这样的需求:有一个班级表,表里有'班级人数'这一列,有一个学生表.如果在学生表里加一条数据的时候就要将表班表里的那个'班级人数'+1.因为多了一个学生.那就在学生表上建一个触发器,但是我如何得到在学生表里刚刚insert的这一条数据的班级id(学生表与班级表的关连字段).也就是如果不知道刚刚在学生表里加的这个学生的班级Id的话,那么就不知道这个学生是哪一个班的.那么就不知道在班级表里的那一个班级的'班级人数'加上一个1.因为我觉得触发器有一个这样的功能:就是可以得到刚刚对这一张表的操作是什么(insert,delete,update)就是说在触发器里可以得到这些相应的关键字.也可以得到刚刚插入表里的数据.但是我不记得了.也可能记错了.
    这样的需求可能就有问题.我在复习触发器,所以想到了这样的一逻辑.如果有好的需求分析非常乐意接受.谢谢.我的邮箱:ljj.epsspl@gmail.com
  • 2 楼:评论
    就是 inserted、deleted 表吧。
  • 3 楼:评论
  • 4 楼:评论
    到底怎样解决这样的一个问题呢?
    请高人指点!!!
    乐于接受 !!
  • 5 楼:评论
  • 6 楼:评论
    EXEC master..xp_sendmail 'MaryM',
          'Don''t forget to print a report for the distributors.'
  • 7 楼:评论
  • 8 楼:评论
  • 9 楼:评论
  • 10 楼:评论
  • 11 楼:评论
    千一网络
  • 12 楼:6
  • 13 楼:
  • 14 楼:评论
  • 15 楼:
  • 16 楼:草泥马
    草泥马
标题:必填
内容: