通过存储过程来对更新数据的合法性进行检测,帮我看看除了下面的方法有没有更好的!

努力偷懒 2004-08-26 02:36:52
我是想通过触发器来对一个表的某个数据进行修改的时候,判断更新的数据是否符合某个条件,如果符合,那么这个更新就无效!下面是当test表的A2更新值为44的话就让这个更新无效,
采用的方法的思路是:
根据inserted中A2的值来进行数据判断
符合就把符合A2=44的记录删除,然后把原来的数据插回原来的地方.

我现在想知道有没有什么命令能不做这么麻烦的事,直接判断是否符合条件,符合就取消更新,否则就什么也不做的这么一个命令?

CREATE TRIGGER testa ON [dbo].[test]
FOR INSERT, UPDATE
AS
if ((select A2 from inserted)=44)
begin
delete test where A2=44
insert [test] (a1,a2,a3) select a1,a2,a3 from deleted
end
...全文
91 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
努力偷懒 2004-08-26
  • 打赏
  • 举报
回复
哦!谢谢啊!我试试!
zjcxc 元老 2004-08-26
  • 打赏
  • 举报
回复
触发器本身是一个事务,所以你在触发器中检测到不允许更新的时候,直接回滚事务,就取消了本次操作.
zjcxc 元老 2004-08-26
  • 打赏
  • 举报
回复
CREATE TRIGGER testa ON [dbo].[test]
FOR INSERT, UPDATE
AS
if ((select A2 from inserted)=44)
rollback tran --直接回滚事务就行了

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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