[英]How to update specific row in datecolumn to date today after update on other column using after update trigger?
當使用T-SQL中的更新后觸發器更新(未插入)Column CustomerProductID時,如何將Date列DateMod更新為今天的日期?
一些背景信息:表已經包含產品列表(鍵列Itemcode ),一旦收到CustomerProductID,它將特定行(產品)的列從NULL更改為整數值。 此更新是將行(產品)的DateMod列更新為今天的日期的觸發器。 我正在使用SSMS 2008,並且具有類似以下代碼的內容,它更改了整個日期列,而不是更新行的特定日期字段:
CREATE TRIGGER trigger_name
ON Table1
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF UPDATE (CustomerProductID) BEGIN
Update Table1
SET DateMod=GETDATE()
END
END
我已經閱讀了一些使用old.value和new.value或使用where存在的解決方案(從插入/更新中選擇)的解決方案,但是它如何工作? 如果兩種方法都可行,在這種情況下哪一種是最有利的? 非常感謝!
我更喜歡將其作為before update
觸發器(在更新后的觸發器中進行更新會提示無限循環,在某些數據庫中是不允許的)。 但是SQL Server不支持。
無論如何,正確的語法是使用inserted
聯接回原始表:
CREATE TRIGGER trigger_name
ON Table1
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF UPDATE(CustomerProductID) BEGIN
Update t1
SET DateMod = GETDATE()
FROM Table1 t1 join
Inserted i
ON Table1.PrimaryKeyColumn = i.PrimaryKeyColumn
END
END
更改代碼,使PrimaryKeyColumn
是正確的主鍵列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.