在更新时,更改日期

时间:2012-11-15 15:44:57

标签: sql sql-server-2005 datetime insert

我正在使用SqlServer 2005.我想设置一个属性(如默认值,但对于任何更改,而不仅仅是插入)将更新日期。换句话说,在每次更新和插入时,当前日期都将放在列中。如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

假设你有一个A表:

CREATE TABLE A (
  ID INT,
  Name VARCHAR(20),
  SomeDate DATE NULL)

您可以创建触发器:

CREATE TRIGGER INSTEAD_OF_A_INSERT
ON A
INSTEAD OF INSERT AS
BEGIN

INSERT INTO A (ID, Name, SomeDate)
SELECT ID, Name, GETDATE ()
FROM inserted 

END
GO

CREATE TRIGGER INSTEAD_OF_A_UPDATE
ON A
INSTEAD OF UPDATE AS
BEGIN

UPDATE A
SET SomeDate = GETDATE(),
    Name = I.Name
FROM A A1 JOIN INSERTED I ON A1.ID = I.ID

END
GO

哪个会给你想要的东西

INSERT INTO A (ID, Name)
VALUES(1, 'John');

INSERT INTO A (ID, Name)
VALUES(2, 'Jack');

UPDATE A
SET Name = 'Jane'

    SELECT *
    FROM A

以下是您可以使用的fiddle

答案 1 :(得分:0)

最简单(但不一定最有效)的方法是使用触发器。

请参阅MSDN

您可以使用AFTER INSERT,UPDATEINSTEAD OF INSERT,UPDATE - 可以根据您的具体要求进行工作。