我發現在sql server中只有after和instead的觸發器。修改插入的pesudo表中的值是非法的。然後我的問題發生:如果我想檢查將要插入到我的表中的數據,並且當數據違反我的約束時,我應該將這些值修改爲默認值,如何執行?如何在插入後更新值?但是,如果我的表中沒有唯一的主鍵或柱,那麼我如何才能找到剛插入的行然後更新它?T-SQL如何在插入之前修改值
4
A
回答
11
基本上與INSTEAD OF INSERT
扳機,就可以實現你在找什麼 - 只是宣讀了INSERTED
僞表中的數據,修改它,並把它插入到表
所以,你的觸發器將看像這樣:
CREATE TRIGGER YourTrigger ON dbo.YourTable
INSTEAD OF INSERT
AS
SET NOCOUNT ON
-- do the INSERT based on the INSERTED pseudo table, modify data as needed
INSERT INTO dbo.YourTable(Col1, Col2, ....., ColN)
SELECT
Col1, 2 * Col2, ....., N * ColN
FROM
INSERTED
當然,你也可以添加例如以WHERE
子句的形式檢查該SELECT .... FROM INSERTED
陳述,例如忽略某些行 - 可能性無窮無盡!
+0
非常感謝。真的行。 :-) – tmj
相關問題
- 1. 在插入之前修改Laravel請求
- 2. Knockout.js修改ko.observable()之前的值寫入
- 3. ClickHouse,如何修改插入時的值?
- 4. 如何修改url之前,在scrapy中?
- 5. jqGrid - 在插入之前修改單元格數據
- 6. 如何在將其插入回購之前修改Ecto變更集?
- 7. 在插入或更新之前是否可以使用觸發器修改值?
- 8. jquery.validate插件 - 如何在表單驗證前修改值
- 9. MVC3如何在TryUpdate之前修改傳入模型?
- 10. TYPO3/Extbase - 如何在驗證/保存對象之前修改值?
- 11. 登錄ASP(AD)如何在認證之前修改UserName的值?
- 12. 如何在UpdateModelValuesPhase之前修改JSF支持bean的值?
- 13. 如何在將值插入SQL SERVER之前檢查值?
- 14. 如何在更新觸發之前更改插入觸發器之前?
- 15. 如何在單詞之前插入2chars
- 16. 在任何HandlerMapping之前修改HttpServletRequest?
- 17. 而不是插入,在插入之前更改列
- 18. 在寫入.conf之前a2billing更改值
- 19. 如何在插入新值之前檢查複合主鍵
- 20. 如何在Derby中插入行之前設置列值?
- 21. Android - 如何避免在插入SqliteDB之前重複值?
- 22. 如何在插入gridview之前知道一行的值?
- 23. 如何在插入WordPress之前清理post_name值?
- 24. 如何在數據綁定Repeater中顯示值之前修改值?
- 25. 如何在使用ListView和SimpleCursorAdaptor顯示行值之前修改行值?
- 26. 如何修改插入的數據
- 27. 插入*之前在Word
- 28. 在Element2之前插入Element1
- 29. Django:在提交字段值之前修改字段值
- 30. 在Silverlight插件加載之前修改.xap文件
「INSTEAD OF」觸發器的一點是可以「捕獲」該操作(例如'INSERT'),然後執行某些操作*而不是正常操作。所以你可以讀出數值,修改它們,然後在INSTEAD OF INSERT觸發器中調用INSERT來插入修改過的數據 –
問題是,如果表格結構發生變化,你需要考慮修改觸發器也是如此。相反,Oracle可以更新更符合邏輯的'插入'對象('新')的等價物。 –