我想用兩個列創建一個表,一個「創建」和一個「修改」,並帶有時間戳類型。我不希望他們有一個默認值。但是當我創建它們時,它會自動將CURRENT_TIMESTAMP作爲它們中的至少一個的默認值,並且也將更新。SQL - 使用兩個沒有默認值的時間戳列創建表
我怎樣纔能有沒有默認的類型時間戳或任何列的更新值?
編輯:我使用MySQL
我想用兩個列創建一個表,一個「創建」和一個「修改」,並帶有時間戳類型。我不希望他們有一個默認值。但是當我創建它們時,它會自動將CURRENT_TIMESTAMP作爲它們中的至少一個的默認值,並且也將更新。SQL - 使用兩個沒有默認值的時間戳列創建表
我怎樣纔能有沒有默認的類型時間戳或任何列的更新值?
編輯:我使用MySQL
如果使用的是SQL Server中,timestamp
類型用於行版本,而不是存儲實際的日期或時間值。 See MSDN。
你可以用datetime
數據類型創建列,然後用觸發器設置您created
和modified
值。
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
我使用My SQL。我不知道我應該使用datetime for SQL,也不是觸發器解決方案。謝謝! – cam 2012-07-15 05:18:23
我試過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
好吧,我的解決方案是爲SQL Server,而不是MySQL。也許別人可以提供在MySQL中創建等效觸發器的語法。它看起來像這個網站將是一個很好的開始:http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html – 2012-07-15 06:59:08
CREATE TABLE(TIMESTAMP val1,TIMESTAMP val2 ...);'? – 2012-07-15 01:27:50
您使用的是什麼RDBMS? – 2012-07-15 01:38:32