では、レコードが最初に挿入されたときに、特定のレコードの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);
次の例のように、トリガーは ' virtual Inserted 'テーブルを活用する必要があります。
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
トリガーの代わりとして、なぜその列にデフォルト値を割り当てるだけではないのでしょうか。例:
ALTER TABLE myTable
ADD CONSTRAINT CONSTRAINT_NAME
DEFAULT CURRENT_TIMESTAMP FOR myColumn
例:
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