如何獲取觸發器的列表以及觸發器內部使用的所有表的列表。意思是
1)觸發器創建的表
2)觸發邏輯內部使用的表?
請在oracle以及sql server中提供解決方案?如何使用觸發器內部使用的所有表的列表獲取觸發器的列表
0
A
回答
2
你會使用ALL_TRIGGERS
和ALL_DEPENDENCIES
找到所有的觸發器與他們不同的表。這是:DBMS所依賴的所有表。因此,在使用動態SQL的情況下,DBMS無法瞭解動態查詢將包含哪些表格,您將錯過這些表格。
select
t.owner || '.' || t.trigger_name as trigger_name,
t.table_owner || '.' || t.table_name as table_name,
(
select
listagg(d.referenced_owner || '.' || d.referenced_name, ', ')
within group (order by d.referenced_owner, d.referenced_name)
from all_dependencies d
where d.owner = t.owner
and d.name = t.trigger_name
and d.type = 'TRIGGER'
and d.referenced_type = 'TABLE'
and not (d.referenced_owner = t.table_owner and d.referenced_name = t.table_name)
) as other_tables
from all_triggers t;
這是甲骨文(我不知道如何同在SQL Server完成的。我想這是非常相似的。SQL Server中,也將有系統表,您可以在這裏查到信息)。
1
在Oracle嘗試下面的查詢,從而獲得所需的輸出
SELECT TRIGGER_NAME,TABLE_NAME,TRIGGER_TYPE, TRIGGERING_EVENT, LINE, TEXT
FROM USER_TRIGGERS UT, USER_SOURCE US
WHERE UT.TRIGGER_NAME=US.NAME;
相關問題
- 1. AWS如何使用java SDK獲取每個dynamodb表的觸發器列表
- 2. 如何觸發多列表上的觸發器?
- 3. 如何獲取鏈接到特定表的所有觸發器?
- 4. 如何獲取數據庫中活動觸發器的列表?
- 5. 使用兩張表的mysql觸發器
- 6. 如何獲取SQL服務器觸發器中已更新列的列表?
- 7. 如何使用時鐘觸發器獲取電子表格ID?
- 8. 如何禁用所有涉及Oracle中的表的觸發器?
- 9. Apex觸發器 - 如何使用觸發器更新所有案例所有者?
- 10. 如何從IBM Db2 9.7的觸發器中獲取更新列的列表?
- 11. 訪問觸發器體內的觸發器表
- 12. 自動生成Oracle中所有表的序列和觸發器
- 13. 列更新沒有使用觸發器
- 14. 觸發與原表的列
- 15. 使用觸發器在其他表
- 16. 日誌表使用觸發器
- 17. Mysql使用觸發器創建表
- 18. 獲取觸發Oracle觸發器的值
- 19. 插入表的觸發器
- 20. SQL CLR觸發器 - 獲取源表
- 21. MySQL觸發器:表到表
- 22. 使用MySQL的觸發器來記錄所有表更改爲輔助表
- 23. 如何使用子表格觸發器填充父表格值
- 24. 如何使用觸發器根據另一個表操作表?
- 25. 觸發器按列連接成新表
- 26. 列表框,DataTemplate中和觸發器
- 27. 觸發器內的'DROP'表 - MySQL
- 28. 如何查看Db上定義的所有觸發器的列表?
- 29. 使用觸發器維護每日最大值列表
- 30. Postgres與Unaccent自動生成表列,使用觸發器?
希望下面的鏈接將有所幫助。 http://stackoverflow.com/questions/12346914/how-to-find-all-trigger-associated-with-a-table-with-sql-server – Japongskie