我有兩個名爲test的表,test_audit.i在測試表 中有一個狀態列,如果我更新了測試表中的狀態列,值爲'APPROVED'那麼只有後更新觸發器將被解僱。我想要查詢創建觸發器 (如果我更新狀態,除了'APPROVED'觸發器不會觸發)更新後觸發如果更新的列值等於'APPROVED'
-4
A
回答
1
您無法控制觸發器是否會被觸發,但是你可以控制觸發器內部會發生什麼。
你應該知道觸發器是基於語句而不是行來觸發的,所以要小心不要假設插入的表只包含一行。
話雖這麼說,你的觸發可能是這個樣子:
CREATE TRIGGER dbo.tr_Test ON dbo.Test FOR UPDATE
AS
INSERT INTO test_audit (Id, Name, [Status], [time stamp])
SELECT Id, Name, [Status], GETDATE()
FROM Inserted I
WHERE I.[Status] = 'APPROVED'
AND EXISTS
(
SELECT 1
FROM Deleted D
WHERE D.Id = I.Id -- assuming primary key column is called id...
AND D.[Status] <> 'APPROVED'
)
+0
不工作老闆 –
+0
當然,我不知道你的表格結構和你的目標,我只是向您展示如何檢查觸發器內部的觸發器列,即「狀態」列已更改爲「已批准」......如果您想要量身定製的解決方案,您將必須提供更多詳細信息 –
+0
測試表有ID,名稱,狀態列和ID是標識column.table審計也有相同的列除了時間戳列 –
相關問題
- 1. MYSQL後觸發器更新如果
- 2. 從INSERT觸發器更新時觸發更新後未觸發
- 3. 觸發更新值
- 4. 更新後的MySQL觸發器 - 如果列不爲空,則更新
- 5. 在更新MySQL後觸發SOLR更新
- 6. 如果新值更高,只更新列
- 7. 我的更新查詢不會觸發更新後觸發
- 8. Salesforce的更新後觸發
- 9. Oracle觸發更新表2中列DML後列值的值
- 10. T-SQL如何在更新行後創建更新觸發器以更新列?
- 11. 創建觸發器其表的更新後自動更新列
- 12. 更新值的觸發器
- 13. 更新如果數據已更改,則僅觸發更新
- 14. 觸發後更新SQL
- 15. 更新後觸發器確實考慮到所有更新值
- 16. PostgreSQL在更新特定列後觸發
- 17. SQL - 更新後觸發多列。
- 18. INSERT觸發器用於更新列
- 19. 在「更新後」觸發器中可用「更新列選擇」
- 20. SQL Server觸發器更新列值
- 21. 觸發更新
- 22. 更新後在更新後的性能問題觸發器
- 23. 將一列值更新爲等於記錄的pkid的觸發器
- 24. 插入觸發器更新值後的mysql觸發器
- 25. 如何在inser或更新後應用更新POSTGRESQL觸發器
- 26. 更新的tsvector更新觸發
- 27. 更新觸發問題的更新
- 28. 更新觸發器上的Mysql更新
- 29. 觸發狀態更新的更新GetMouseButtonDown
- 30. 列更改觸發器更新
而你的問題是什麼?試過了什麼? – GurV
觸發器始終會觸發。在觸發器中放置一個「if」。 –
@gordon linoff謝謝你的信息,但我不知道如何應用if語句中的trigger.if有可能請寫下查詢 –