我是PostgreSQL的新手,想知道是否有一種方法可以爲插入和更新操作創建一個可以從多個表中調用的觸發器函數?從多個表中調用的動態觸發器函數POSTGRESQL
0
A
回答
1
是的,您可以創建一個觸發器過程並從不同的表中調用它。從觸發過程中,您可以訪問幾個特殊變量,這些變量提供有關稱爲觸發器的表的元數據,即TG_TABLE_NAME
和TG_TABLE_SCHEMA
。使用這些元數據,您可以準確定義觸發器必須執行的操作,具體取決於調用哪個表。
TG_TABLE_NAME
數據類型名稱;引起 觸發器調用的表的名稱。
TG_TABLE_SCHEMA
數據類型名稱;導致觸發器調用的表的 模式的名稱。
可變TG_OP
提供一種導致調用該觸發器的動作:
TG_OP
數據類型文本;一個INSERT,UPDATE,DELETE或TRUNCATE字符串,告訴觸發器觸發了哪個操作。
其他非常有用的特殊變量是NEW
和OLD
。它們包含通過數據庫操作更改的舊數據和新數據:
NEW
數據類型RECORD;在行級觸發器中保存新數據庫行的變量爲 INSERT/UPDATE操作。在語句級觸發器和DELETE操作中未分配此變量 。
OLD
數據類型RECORD;在行級觸發器中保留舊數據庫行的變量 UPDATE/DELETE操作。在語句級觸發器和INSERT操作中未分配此變量 。
相關問題
- 1. PostgreSQL觸發器動態生成多個表的代碼
- 2. PostgreSQL多重觸發器和函數
- 3. PostgreSql中的函數和觸發器
- 4. 從MySQL觸發器調用PHP函數
- 5. 如何從PostgreSQL中的另一個函數調用表函數?
- 6. 創建觸發器,用於將數據從一個表複製到postgresql中的動態生成表中
- 7. 動態分配觸發器名稱postgresql
- 8. PostgreSQL觸發函數執行多次
- 9. 調試postgresql觸發器
- 10. 在postgresql上使用動態表名觸發器
- 11. 在PostgreSQL觸發函數中使用pg_notify
- 12. 可以從Oracle中的觸發器調用動態SQL嗎?
- 13. 使用PostgreSQL觸發器動態審計數據
- 14. 如何在PostgreSQL觸發器函數中獲取表名?
- 15. postgresql觸發函數中的死鎖
- 16. 在postgresql函數中動態命名錶
- 17. jquery多次觸發函數調用
- 18. 如何檢查哪個表被調用postgresql中的哪個觸發器?
- 19. Postgresql觸發器
- 20. postgresql中的觸發器
- 21. SQL觸發器 - 無法調用函數
- 22. Magento - 函數調用事件觸發器
- 23. 如何從函數執行動態查詢(創建觸發器)?
- 24. postgresql-使用觸發器觸發
- 25. postgresql中的調用函數
- 26. Lambda的多個DynamoDB觸發器 - 每個表單獨調用?
- 27. Postgresql觸發函數的語法錯誤
- 28. Postgresql函數動態表quote_ident錯誤
- 29. 在PostgreSQL中可以觸發知道哪個函數調用了它?
- 30. Oracle Apex:從表A中調用表A中的觸發器
是的,這是可能的,參見例如。這裏:https://wiki.postgresql.org/wiki/Audit_trigger_91plus –
感謝您的鏈接。在我的情況下,我有20個主表和20個臨時表。 在主表上插入或更新數據時,應在各自的臨時表上插入/更新數據。我可以通過創建一個觸發器函數並從不同的表中調用它來完成此操作嗎? – Sam