1 回答
TA贡献2041条经验 获得超4个赞
创建测试表,数据:
create table table1
(a1 int,
a2 int)
create table table2
(b1 int,
b2 int)
insert into table1 values (1,1)
insert into table1 values (1,2)
insert into table2 values (0,1)
insert into table2 values (1,2)
创建触发器:
create trigger t_update
on table1
for update
as
declare @a2 int
declare @b1 int
declare @cnt int
select @cnt=count(*) from inserted where a2 in (select b2 from table2)
select @b1=b1 from table2 where b2=(select a2 from inserted)
if (@cnt>0 and @b1=1)
begin
print '不允许修改'
rollback transaction
end
测试1:修改a2=1的那条数据里的a1为其他值:
1
update table1 set a1=100 where a2=1 -- 这个是允许修改的
测试2:修改a2=2的那条数据a1为其他值:
1
update table1 set a1=10 where a2=2 -- 这个是不允许修改的,会报错
剩下的你自己改改吧,大概思路就这样了。
- 1 回答
- 0 关注
- 708 浏览
添加回答
举报