`
evilwicker
  • 浏览: 63290 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

SQL Server触发器

阅读更多

创建触发器的语法

 

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics