插入时触发将新记录中的列更新为 CURRENT_TIMESTAMP

AAr*_*out 2 trigger sql-server t-sql timestamp row-modification-time

好的,所以我试图在最初插入记录时将特定记录中的列更新为 CURRENT_TIMESTAMP。这就是我所拥有的,否则我就迷路了。

CREATE TRIGGER dbo.TrgUpnInsert
  ON [CNLH Security Authentication].dbo.DateTimestamp
    AFTER INSERT, 
    INSERT INTO [CNLH Security Authentication].dbo.EntranceInformation (DateTimestamp) Values (CURRENT_TIMESTAMP);
Run Code Online (Sandbox Code Playgroud)

Sco*_*red 6

您的触发器需要利用“虚拟插入”表,如下例所示:

CREATE TRIGGER ModDate
    ON TableX
    AFTER INSERT
AS
BEGIN
    UPDATE X 
    SET ModifiedDate = CURRENT_TIMESTAMP
    FROM TableX X
    JOIN inserted i ON X.key = i.key -- change to whatever key identifies 
                                     -- the tuples
END 
Run Code Online (Sandbox Code Playgroud)

作为触发器的替代方案,为什么不简单地为该列分配一个默认值。例子:

ALTER TABLE myTable 
  ADD CONSTRAINT CONSTRAINT_NAME
    DEFAULT CURRENT_TIMESTAMP FOR myColumn
Run Code Online (Sandbox Code Playgroud)

例子:

IF OBJECT_ID('tempdb..#temp') IS NOT NULL
    DROP TABLE #temp

CREATE TABLE #temp (
    col1 VARCHAR(10)
    ,col2 DATETIME
    )

ALTER TABLE #temp ADD CONSTRAINT ConstraintForTemp DEFAULT CURRENT_TIMESTAMP
FOR col2

INSERT INTO #temp (col1)
VALUES ('abc')

SELECT *
FROM #temp
Run Code Online (Sandbox Code Playgroud)