1 if update(列名)
检查是否更新了某一列,用于 insert 或 update,不能用于 delete。
例:
create trigger f
on tbl
for update
as
if update(status) or update(title) --更新了 status 或 title 列
-------------------------------------------
2 rollback
事物回滚。
create trigger tr
on 表名
for update
as
if update(userName)
rollback tran
关键在最后两句,其解释为:如果更新了 userName 列,就回滚事务。
-------------------------------------------
3 @@rowcount
系统变量,更改的行数。
@@ROWCOUNT返回受上一语句影响的行数,返回值类型为 int 整型。 如果行数大于 20 亿,则需要使用 ROWCOUNT_BIG。
@@ROWCOUNT和@@ERROR变量的值,在执行完一条语句后总是会发生变化,所以我们将他们作为判断的依据的时候应该首先保存在局部变量中。他们反映的都是紧接着的上一条语句对他们的影响!
我们通常可以通过update、insert语句并使用@@ROWCOUNT来检测是否更改了任何一些行。
-------------------------------------------
4 declare
声明变量。
例:
declare @n int --定义了一个int类型的变量@n
-------------------------------------------
5 object_id
object_id(N'student_sum',N'U') is null--判断student_sum表是否存在
-------------------------------------------
6 if not exists/exists
if not exists (select * from student_sum)--判断表中是否有记录
-------------------------------------------
7 if 特殊运算符
特殊运算符:IN、NOT IN、BETWEEN…AND…、LIKE、NOT LIKE、IS NULL、IS NOT NULL、SOME|ANY、ALL、EXISTS、NOT EXISTS。
例:
if @a in('F','M')/(select子句) --若@a在'F'或'M'两者之一或select子句
if @a between 0 and 100 --若@a在0-100之间
if @a like'D[0-9][0-9]' --若@a为DXX,X为0~9其中一个
if @a is null --若@a为空值
if @a >= all/any/some(select子句) --若@a>=子句集合中所有/任意/某些
if exists(select子句) --子句集合是否至少有一个元组