【问题标题】:SQL get date when specific fields or columns are changedSQL获取特定字段或列更改的日期
【发布时间】:2015-03-04 08:59:55
【问题描述】:

我想创建一个列,仅当特定字段/列填充数据或更改其数据时才存储日期。

假设我有一个名为 contracts 的表,其中包含销售人员、销售的产品、销售日期等...那么是否有人只更改销售人员...那么更改销售人员的日期应该在特定列中更新。此列不应捕获任何列更改的日期,不,只是销售人员。一直在想这样做的逻辑,但不知道从哪里开始......

即使我需要使用一些 php 也可以,请协助...或指导我的提示、想法、建议将不胜感激

【问题讨论】:

  • 触发器非常适合这个!
  • 确实是通过数据库本身来实现的。
  • 您可以为此目的使用 After 触发器,该触发器将设置为在您的表上执行的每个 Update 语句之后执行,在此触发器中您可以检查特定列是否已被修改并相应地更新您的 Date 列跨度>

标签: php sql postgresql


【解决方案1】:

所以你可以在你的桌子上使用AFTER TRIGGER。在表中创建列,例如 DateUpdatedDEFAULT CONSTRAINT GETDATE()

CREATE TABLE Contracts
(  
   ........................,
   SalesPerson NVARCHAR(60), 
   ProductSold NVARCHAR(60), 
   Date DATE,
   DateUpdated DATETIME
      CONSTRAINT DF_Contracts_DateUpdated DEFAULT (GETDATE())
)

在您的表上创建触发器,该触发器将在每次修改任何数据时更新 DateUpdated 字段。

CREATE TRIGGER TriggerName
   ON Contracts
   FOR UPDATE
   AS
   BEGIN
      SET NOCOUNT ON
      UPDATE Contracts AS C
      SET DateUpdated = GETDATE()
      FROM INSERTED AS I
      WHERE I.Table1ID = C.Table1ID
    END

【讨论】:

    猜你喜欢
    • 2020-03-23
    • 2021-11-03
    • 2018-05-13
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多