我想创建一个包含两列的表,一列“创建”,一列“修改”,时间戳类型。我不希望它们具有默认值。但是当我创建它们时,它会自动将 CURRENT_TIMESTAMP 作为其中至少一个的默认值,并且还会在更新时。
我如何才能为我的任何列设置没有默认值或更新值的类型时间戳?
编辑:我使用 MySQL
我想创建一个包含两列的表,一列“创建”,一列“修改”,时间戳类型。我不希望它们具有默认值。但是当我创建它们时,它会自动将 CURRENT_TIMESTAMP 作为其中至少一个的默认值,并且还会在更新时。
我如何才能为我的任何列设置没有默认值或更新值的类型时间戳?
编辑:我使用 MySQL
如果您使用 SQL Server,则该timestamp
类型用于行版本控制,而不是用于存储实际日期或时间值。 请参阅 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