我正在使用SqlServer 2005.我想設置一個屬性(如默認值,但對於任何更改,而不僅僅是插入)將更新日期。換句話說,在每次更新和插入時,當前日期都會放在列中。這將如何實現?更新,更改日期
更新,更改日期
回答
讓我們假設你有一個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可以玩。
謝謝。我讀過一些觸發器。這是做這件事的唯一方法,除了直接更新/插入值嗎?我試圖找到我的最佳選擇,雖然它似乎觸發器是標準。 – steventnorris
如果您想在數據庫服務器級別執行此操作,這是我知道的唯一方法。 – ShyJ
@steventnorris如果您可以通過存儲過程控制數據訪問,那麼如果您正確設置權限並控制那些可以繞過這些過程的用戶,您不一定會*需要觸發器。但是,如果你允許特設的DML,那麼是的,這是我的方式(當你考慮是否應該允許特設的DML)。 –
最簡單的(但不一定是最有效的)方法就是使用觸發器。
參見MSDN。
您可以使用AFTER INSERT,UPDATE
或INSTEAD OF INSERT,UPDATE
- 可以根據您的確切要求完成任務。
- 1. 更改新日期格式
- 2. 更新小部件更改日期
- 3. asp.net mvc更新日期更改
- 4. 更改日期
- 5. 更改日期
- 6. 更改日期
- 7. Sqlite:更新日期列,但只更改日期 - 保留時間
- 8. 要更新的JavaScript結束日期更改開始日期的日期
- 9. UIDatePicker - 更改日期
- 10. VBA更改日期
- 11. 更改日期甲
- 12. MonoTouch.Dialog:ContentSizeForViewInPopover更改日期
- 13. DateTime.Parse更改日期?
- 14. json.stringfy更改日期
- 15. CMD日期更改日誌
- 16. 更改jQuery日曆日期
- 17. 更新日期anomoly
- 18. 更新datetype日期
- 19. 更新日期值
- 20. 更新值日期
- 21. Powershell更新日期
- 22. 無法更新日曆日期更改模型
- 23. 更新cookie值而不更改其到期日期?
- 24. 更新最後修改日期列
- 25. 更新Systemdate修改日期字段asp.net
- 26. jquery當日期更改,更改另一個日期
- 27. 更改日期和重新更改計劃
- 28. SharePoint - 不會更改更新時的修改日期
- 29. 更新日期字段不更新
- 30. WordPress的發佈日期更新更新
每行中的日期或某個地方的單個日期? –
Google「trigger」 – texasbruce
您可能正在尋找[INSTEAD OF TRIGGER](http://msdn.microsoft.com/zh-cn/library/ms189799(v = sql.90).aspx)。 – ShyJ