我需要在现有表中添加一个新列,以便每当添加新行或编辑现有行时,该列将填充事务的确切日期和时间。我尝试使用 TimeStamp 但显然 TimeStamp 它与日期时间无关
它只是一个连续数字的二进制表示——它只有助于确保一行在被读取后没有改变。(引自如何将 SQL Server 的时间戳列转换为日期时间格式
非常感谢任何帮助
我需要在现有表中添加一个新列,以便每当添加新行或编辑现有行时,该列将填充事务的确切日期和时间。我尝试使用 TimeStamp 但显然 TimeStamp 它与日期时间无关
它只是一个连续数字的二进制表示——它只有助于确保一行在被读取后没有改变。(引自如何将 SQL Server 的时间戳列转换为日期时间格式
非常感谢任何帮助
听起来您需要创建一个触发器来填充/更新这个新列。请参阅以下内容:如何:使用 SQL Server 2008 为自动更新修改日期创建触发器
您必须在表上创建触发器,INSERT
并且UPDATE
在触发器中可以使用
UPDATE myTable
SET myColumn = GETDATE()
你的触发器应该看起来像
CREATE TRIGGER trigger_updateTimestamp
ON myTable
AFTER INSERT, UPDATE
AS
UPDATE myTable
SET myColumn = GETDATE()
WHERE ID = 'xyz'
尝试
ALTER TABLE myTable ADD CONSTRAINT [DF_myTable_myColumn] DEFAULT (getdate()) FOR [myColumn]
GO
...一个好的做法是为编辑的日期添加一个额外的列,并使用触发器进行更新
CREATE TRIGGER trigger_updateMyTable
ON myTable
AFTER UPDATE
AS
IF EXISTS (SELECT * FROM INSERTED)
BEGIN
IF ΝΟΤ EXISTS (SELECT * FROM DELETED)
BEGIN
UPDATE myTable
SET myEditColumn = GETDATE()
WHERE ID IN (
SELECT
ID
FROM INSERTED
)
END
END