问个触发器获取更新前数据的问题

qq_34067000 2018-07-08 11:01:18
select @temp=i.Mid, @quota=i.SQuota, @quota1=d.SQuota from inserted i,deleted d where i.ProductID=d.ProductID


UPDATE m_member SET p1=@quota,d1=@quota1 where PID=@temp

为什么我p1,d1二个值是一样的???不是一个修前改的数据,一个修改后的数据吗?
...全文
270 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34067000 2018-07-09
  • 打赏
  • 举报
回复
哪位高人指点一二
  • 打赏
  • 举报
回复
如楼上所说的,你如果改的值是相同的,那肯定是一样的了,要做下处理才行

ALTER TRIGGER [dbo].[triggerUpdateProduct]
ON [dbo].[p_product]
AFTER UPDATE
AS
IF UPDATE(SQuota) --判断更新该字段才处理
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

declare @temp int
declare @status int
declare @quota decimal
declare @quota1 decimal
declare @productid int
declare @ProductType int
declare @id int

select @temp=i.Mid,@status=i.Status,@quota=i.SQuota,@productid=i.ProductID,@ProductType=i.ProductType,@quota1=d.SQuota from inserted i,deleted d where i.ProductID=d.ProductID
IF @quota<>@quota1 --更新的值不一样才更新
UPDATE m_member SET p1=@quota,d1=@quota1 where PID=@temp
END
  • 打赏
  • 举报
回复
当你修改的时候这个值没有变化的时候就会出现前后一致的值啊。我不太相信你只有做这一个字段的数据更新。
qq_34067000 2018-07-09
  • 打赏
  • 举报
回复
AFTER INSERT,UPDATE,DELETE

其实这里只有UPDATE起作用
qq_34067000 2018-07-09
  • 打赏
  • 举报
回复
ALTER TRIGGER [dbo].[triggerUpdateProduct]
ON [dbo].[p_product]
AFTER INSERT,UPDATE,DELETE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

declare @temp int
declare @status int
declare @quota decimal
declare @quota1 decimal
declare @productid int
declare @ProductType int
declare @id int

select @temp=i.Mid,@status=i.Status,@quota=i.SQuota,@productid=i.ProductID,@ProductType=i.ProductType,@quota1=d.SQuota from inserted i,deleted d where i.ProductID=d.ProductID


UPDATE m_member SET p1=@quota,d1=@quota1 where PID=@temp
END
这个是完整的
qq_34067000 2018-07-09
  • 打赏
  • 举报
回复
ALTER TRIGGER [dbo].[triggerUpdateProduct]
ON [dbo].[p_product]
AFTER INSERT,UPDATE,DELETE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

declare @temp int
declare @status int
declare @quota decimal
declare @quota1 decimal
declare @productid int
declare @ProductType int
declare @id int

select @temp=i.Mid,@status=i.Status,@quota=i.SQuota,@productid=i.ProductID,@ProductType=i.ProductType,@quota1=d.SQuota from inserted i,deleted d where i.ProductID=d.ProductID


UPDATE m_member SET p1=@quota,d1=@quota
END
  • 打赏
  • 举报
回复
把你创建触发器的整个内容发一下才知道,你这个发的看不出什么

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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