触发器的问题

gotoitcn 2004-09-16 06:47:17
我有一个表中有一个字段会经常被人随意的修改,我想做一个触发器,这个触发器实现的功能就是在当这个表中的这个列的值被修改后,自动能更改为我想的值

例如
一个表book,中有一个字段aa,当aa的值变为0时,触发器能自动改为1
...全文
83 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqdj 2004-09-17
  • 打赏
  • 举报
回复
用INSTEAD OF UPDATE 触发器来解决你的问题,很灵活,查下帮助.
yiyo2002 2004-09-17
  • 打赏
  • 举报
回复
CREATE TRIGGER book_update ON BOOK FOR UPDATE
AS
IF @@ROWCOUNT=0 BEGIN
RASIERROR('没有任何列发生了变化!',16,10)
RETURN
END
IF UPDATE(aa)
UPDATE book SET aa='1' FROM inserted i WHERE book.PK=i.PK AND aa='0'
ELSE BEGIN
RASIERROR('aa列没有发生变化!',16,10)
RETURN
END
GO
cxingh 2004-09-17
  • 打赏
  • 举报
回复
1.
create trigger TU_Book on book
for update
as
if exists(select 1 from inserted where aa=0)
begin
raiserror 33333 '不可以随便修改为0'
rollback
end

2. 在前台将这个栏位设为只读!!
lipkissnow 2004-09-17
  • 打赏
  • 举报
回复
create trigger test on book
for update
as

if update(fields)

update book set aa='1' from inserted where book.primarykey = inserted.primarykey and inserted.aa='0'
了缘 2004-09-17
  • 打赏
  • 举报
回复
create trigger test on book
for update
as
update book set aa='1' from inserted
where book.主键= inserted.主键
and inserted.aa='0'
netcoder 2004-09-16
  • 打赏
  • 举报
回复
方法比较多,看具体应用
先来一个,回滚事务,不太科学 ,也是个方法

create trigger test on book
for update
as
if exists(select * from inserted where aa=0)
rollback

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧