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