200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 列级触发器 SQL Server

列级触发器 SQL Server

时间:2022-09-09 00:11:18

相关推荐

列级触发器 SQL Server

列级触发器就是对表中的某列进行添加或修改时所执行的触发器。

建立列级触发器与建立触发器的语法是相同的,只是在创建时使用IF UPDATE(column)参数。

语法:

CREATE TRIGGER trigger_name

ON { table | view }

[ WITH ENCRYPTION ]

{

{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }

[ WITH APPEND ]

[ NOT FOR REPLICATION ]

AS

[ { IF UPDATE ( column )

[ { AND | OR } UPDATE ( column ) ]

[ ...n ]

| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )

{ comparison_operator } column_bitmask [ ...n ]

} ]

sql_statement [ ...n ]

}

}

参数说明:

IF UPDATE (column):测试在指定列上进行的INSERT或UPDATE操作,不能用于DELETE操作,可以指定多列。因为在ON子句中指定了表名,所以在 IF UPDATE子句中的列名前不要包含表名。若要测试在多个列上进行的INSERT或UPDATE操作,可在第一个操作后指定单独的 UPDATE(column)子句。在INSERT操作中IF UPDATE将返回TRUE值,因为这些列插入了显式值或隐性(NULL)值。

本示例在“MR_SQL”数据库的“MR_Stu_XX”表中创立一个列级触发器,当添加或修改“MR_Stu_XX”表中的“学生姓名”字段时,将在创建的“MR_Stu_JL”表中加以记录。

使用Transact-SQL建立列级触发器

操作步骤如下:

(1)打开SQL查询分析器。

(2)SQL语句如下:

在MR_SQL数据库中创建数据表MR_Stu_JL,用于记录修改MR_Stu_XX表时的时间、用户名等。

USE MR_SQL

GO

CREATE TABLE MR_Stu_JL

(

Data datetime,

MR_id char(4),

state varchar(16),

MR_name varchar(30)

)

GO

在“MR_Stu_XX”表中创建列级触发器“TRI_Stu_JL”,对“MR_Stu_XX”表的“学生编号”进行添加、修改时执行“TRI_Stu_JL”触发器。

CREATE TRIGGER TRI_Stu_JL ON dbo.MR_Stu_XX

FOR INSERT,UPDATE

AS

DECLARE @id char(4)

Select @id=学生编号 from Inserted

if UPDATE(学生姓名)

INSERT MR_Stu_JL VALUES(Getdate(),@id,'修改学生姓名',user_name())

GO

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。