创建触发器的语法
CREATE TRIGGER 触发器名
ON { 表名 | 视图名 }
[ WITH ENCRYPTION ]
{
{ FOR | AFTER | INSTEAD OF }
{ [ DELETE] [,] [ INSERT ] [,] [ UPDATE ] }
AS
[ IF UPDATE ( 列 ) [ { AND | OR } UPDATE ( 列 ) ] [ ...n ] ]
SQL语句[ ...n ]
}
例子:
-- insert 触发器
-- 在S表上创建一个触发器,如果插入的学生姓名为“猪二哥”则撤销插入,并提示“猪八戒”太挫,不是我们的学生
use TCS
go
create trigger Name_check
on S
for insert
as
declare @name nvarchar(20)
select @name = SN from inserted
if @name = '猪二哥'
begin
print ‘猪八戒太挫,不是我们的学生’
rollback transaction
end
go
insert into S values('S9','猪二哥','男','100','管理') -- 出入无效,被Name_check触发器删除
-- update 触发器
-- 在S表上创建一个update触发器,如果更改了性别,在更改无效
use TCS
go
create trigger Column_Sex
on S
for update
as
if update(Sex)
begin
print 'update on Sex is not allowed!'
rollback transaction
end
go
update S set Sex = '男' where SNo='S1'
-- 在S表上创建一个update触发器,如果更新后Age大于100,则更新无效
use TCS
go
create trigger Age_Check_i
on S
for insert
as
declare @age int
select @age = Age from inserted
if @age > 100
begin
print str(@age) + ' is too big !'
rollback transaction
end
go
update S set Age = 33 where SNo='S1'
insert into S values('S9','猪哥','男',105,'管理')
-- 删除触发器
drop trigger Age_Check_i