如何修改trigger 逻辑表Inserted Deleted内容值

背着书包去打工 2011-06-16 12:36:14
因需要,先要判断一笔记录的有效性,如果无效则要将无效的值替换,
但SQL提示不能修改逻辑表。求解!!!!
...全文
208 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢大家,看来只能“曲线救国”了
挨踢直男 2011-06-16
  • 打赏
  • 举报
回复
把这些数据弄到临时表里面或表变量里面就可以修改了
cd731107 2011-06-16
  • 打赏
  • 举报
回复
inserted表和deleted表是系统默认自动产生的,所以不能修改,
你应该利用这两个表和你需要的有效值结合起来
-晴天 2011-06-16
  • 打赏
  • 举报
回复
你只能在使用它时,直接对查询结果修改后再作进一步的处理(如插入/更新到其他表中),如不好弄,可以考虑用公用表达式或临时表存放中间内容.
-晴天 2011-06-16
  • 打赏
  • 举报
回复
inserted表和deleted表不可修改.
实验5.1 存储过程的建立与使用 一、实验目的 理解存储过程的概念、作用、建立和调用方法。 二、实验原理 使用CREATE PROCEDURE语句创建存储过程,ALTER PROCEDURE语句修改存储过程,DROP PROCEDURE语句删除存储过程,存储过程有不带参数的、有带输入参数的、有带输出参数(output)的,还可以有带返回的。创建好的存储过程可以使用EXEC procedure_name语句执行。 实验5.2 触发器的建立与使用 一、实验目的 理解触发器的概念和作用;了解触发器的分类及触发条件;掌握触发器的定义及应用。 二、实验原理 1、 使用CREATE TRIGGER语句定义触发器,ALTER TRIGGER语句修改触发器,DROP TRIGGER语句删除触发器。 2、 触发器分AFTER/FOR和INSTEAD OF两种类型:AFTER/FOR类型的触发器是在相应的触发语句(insertdelete、update)执行完后被触发的。如果触发语句对应的上有完整性约束,这些完整性约束必须不违背时,相应的触发语句才能执行,然后才能触发对应的AFTER/FOR类型的触发器。INSTEAD OF类型的触发器会在触发语句(insertdelete、update)执行之前被触发,并取代相应的触发语句。 3、 在或视图上,每个INSERT、UPDATE或DELETE语句只能创建一个INSTEAD OF类型的触发器,无法为有外键约束且指定为级联删除或级联修改创建DELETE或UPDATE语句上的INSTEAD OF 类型的触发器。 SQL SERVER为每个触发器都创建了两个临时INSERTEDDELETED,这两个逻辑结构与被触发器作用的一样,用户可以读取这两个内容,但不能对它们进行修改,触发器执行完后,这两个也会自动删除。当执行INSERT时,INSERTED中保存要向中插入的所有行;当执行DELETE时,DELETED中保存要从中删除的所有行;当执行UPDATE时,修改前的行保存在DELETED中,修改后的行保存在INSERTED行中。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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