2013-05-22 31 views
0

我有以下要求:時間戳,rowversion和日期時間 - 我需要一個標誌,當行被插入或更新

我有1獨特的自動增量詮釋ID和數據列的表。 我需要以下內容: 每次將行插入到該表中時,表右端的列必須包含該插入的完整日期時間。 另外,如果一個行被更新,我需要該列保存該行插入到表中的完整日期時間,以便更新以保存該行的更新時間。

現在明顯和非常簡單的方式來做到這一點是: 在你創建表:

create table My_Test_Table 
(my_id int identity not null, 
my_data nvarchar(max)); 

你改變你的表上添加日期時間列和默認的約束:

ALTER TABLE My_Test_Table 
ADD [timestamp] datetime; 
ALTER TABLE My_Test_Table 
ADD CONSTRAINT DF_My_Test_Table_timestamp DEFAULT GETDATE() FOR [timestamp]; 

然後你做出更新的好觸發器,如下所示:

CREATE TRIGGER DML_Trigger_update_My_Test_Table 
ON My_Test_Table 
FOR UPDATE 
AS 
IF @@ROWCOUNT <> 0 
BEGIN 
IF EXISTS (SELECT * FROM INSERTED) AND EXISTS (SELECT * FROM DELETED) 
BEGIN 
UPDATE My_Test_Table 
SET [timestamp] = GETDATE() 
FROM INSERTED 
WHERE My_Test_Table.my_id = INSERTED.my_id; 
END 
END 

現在棘手的部分是: 我想,因爲這裏超出範圍的原因,要實現上面的確切的事情,但沒有觸發器! 這可能嗎? 我不想使用SQL類型的時間戳或rowversion,這對我不起作用,我需要將日期,時間縮短到毫秒級以清楚地存儲在該列中。 任何想法將不勝感激。

回答