2012-07-15 34 views
0

我想用兩個列創建一個表,一個「創建」和一個「修改」,並帶有時間戳類型。我不希望他們有一個默認值。但是當我創建它們時,它會自動將CURRENT_TIMESTAMP作爲它們中的至少一個的默認值,並且也將更新。SQL - 使用兩個沒有默認值的時間戳列創建表

我怎樣纔能有沒有默認的類型時間戳或任何列的更新值?

編輯:我使用MySQL

+1

CREATE TABLE(TIMESTAMP val1,TIMESTAMP val2 ...);'? – 2012-07-15 01:27:50

+2

您使用的是什麼RDBMS? – 2012-07-15 01:38:32

回答

0

如果使用的是SQL Server中,timestamp類型用於行版本,而不是存儲實際的日期或時間值。 See MSDN

你可以用datetime數據類型創建列,然後用觸發器設置您createdmodified值。

CREATE TRIGGER trg_SetDateCreated ON MyTable 
FOR INSERT AS 
    UPDATE MyTable 
    SET created = CURRENT_TIMESTAMP 
    WHERE MyTable.id = (SELECT Id FROM Inserted); 
GO 

CREATE TRIGGER trg_SetDateModified ON MyTable 
FOR UPDATE AS 
    UPDATE MyTable 
    SET modified = CURRENT_TIMESTAMP 
    WHERE MyTable.id = (SELECT Id FROM Inserted); 
GO 
+0

我使用My SQL。我不知道我應該使用datetime for SQL,也不是觸發器解決方案。謝謝! – cam 2012-07-15 05:18:23

+0

我試過CREATE TRIGGER trg_SetDateCreated ON用戶FOR INSERT AS UPDATE users SET us_created = CURRENT_TIMESTAMP WHERE users.us_id =(SELECT us_id FROM Inserted);我得到一個語法錯誤... – cam 2012-07-15 05:35:50

+0

好吧,我的解決方案是爲SQL Server,而不是MySQL。也許別人可以提供在MySQL中創建等效觸發器的語法。它看起來像這個網站將是一個很好的開始:http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html – 2012-07-15 06:59:08

相關問題