我想创建一个包含两列的表,一个是“created”,另一个是“modified”,带有时间戳类型。我不希望他们有默认值。但是当我创建它们时,它会自动将CURRENT_TIMESTAMP作为其中至少一个的默认值,并且还会更新。
如何为我的任何列提供没有默认值或更新值的类型时间戳?
编辑:我使用MySQL
答案 0 :(得分:0)
如果您使用的是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