【问题标题】:How to generate the newid when there is change in column value in sql serversql server中列值发生变化时如何生成newid
【发布时间】:2020-09-25 01:33:38
【问题描述】:

考虑下面的例子

ID| RecordUID                          |   Person |Value
1 |49D62793-989B-4135-9873-21572D511297|   Test   |10
2 |49D62793-989B-4135-9873-21572D511297|   Test   |11
3 |DDB40B89-2BB4-4536-9847-32B9F53C0196|   Test1  |21

person列值发生变化时如何生成上述新id(RecordUID(NewID()))?

我需要像

这样的选择查询
Select ID,NewID() when a change in Person, value from Table A

提前致谢!!!

【问题讨论】:

  • 您的选择有什么问题?您在寻找触发器吗?
  • 你应该使用时间戳列,更新是自动的
  • @Esperento57 OP 需要更新RecordUID仅当 Person 列更新。因此这无济于事。
  • 使用触发器然后像提议萨米人

标签: sql sql-server tsql sql-server-2012


【解决方案1】:

我想你正在寻找AFTER UPDATE TRIGGER,如下所示

CREATE TRIGGER MyTrig
ON Data
AFTER UPDATE
AS

   UPDATE D
   SET RecordUID = NEWID()
   FROM Data D 
   JOIN (
          SELECT I.Id
          FROM INSERTED I
          JOIN DELETED D ON I.Id = D.Id AND I.Person <> D.Person
        ) T ON D.Id = T.Id;

这是db<>fiddle,您可以在其中看到它是如何在线工作的。

【讨论】:

  • 我在 SQL server 中寻找视图
  • 你不能在VIEW 中这样做。如果Person 值发生变化,您将如何检测?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 2021-11-11
  • 2021-10-25
  • 1970-01-01
  • 2021-04-17
相关资源
最近更新 更多