加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SQL中创建触发器不允许修改表中某几个字段的值

(2013-04-15 15:26:03)
标签:

中创

几个

代码

字段

触发器

分类: 学习

【问题描述】:SQL中通过触发器实现禁止修改表中某几列的值

【建表语句】:

create table test1
(
 ID int identity(1,1) primary key,

 name varchar(10),
 age int default 25,
 sex char(2) default '男'
)
go


create table test2
(
 ID int,

 name varchar(10),
 Age int,
 sex char(2)
)
go

【实现代码】:

create trigger trigger_update
on test_updaterecord
for update
as
begin
 update test1 set test1.name=deleted.name,test1.age=deleted.age from test1,deleted where test1.id=deleted.id and test1.name!=deleted.name and test1.age!=deleted.age
end

【代码说明】:

1、上面的代码实现不允许修改test1表中name和age两个字段的值,但是允许修改其他列的值,比如原来一条记录id=1,name='wyl',age=25,sex='男' 执行语句update test1 set name='wyl918',age='20',sex='女' where id=1后记录的值变为 id=1,name='wyl',age=25,sex='女'。

【通过下面的语句创建的触发器可以实现如果指定的列被修改后则取消整条语句的运行】

create trigger trigger_update
on test_updaterecord
for update
as
begin

 if update(name)

 begin

    rollback transaction
 end
end

【代码说明】:比如原来一条记录id=1,name='wyl',age=25,sex='男' 执行语句update test1 set name='wyl918',age='20',sex='女' where id=1后记录的值变为 id=1,name='wyl',age=25,sex='男'。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有