在我的數據庫中有很多序列,觸發器和表。每次我將哪個表關聯到哪個觸發器(和序列),我都很困惑。如何在單個查詢中查看這些列表?如何查看錶格列表和觸發器(和序列)列表?
回答
在Oracle中,你無法找到其序列上表中使用,它不是在表關聯水平。爲此,您需要查找代碼,並搜索使用它的序列,可以在插入觸發器之前或在PL/SQL代碼中使用它。
觸發,你可以看到數據字典視圖
select table_name,
trigger_name as object_name,
'TRIGGER' object_type
from ALL_TRIGGERS
編輯 我找到一個序列的方式是
- 假設我想查一下「Seq_ID」是被使用。
- 從dba_source中選擇*,其中較低(文本)如'%seq_id.nextval%';
- 這會告訴我序列被引用的代碼,可能你可以在代碼中找到插入語句,從中你可以發現這個序列與哪個表關聯
- 或者它會給你觸發代碼,並從觸發器中可以找到引用哪個表。
@guruv然後如何看哪個表與哪個序列相關聯? – user2801653
@ user2801653:請查看編輯部分 –
您從依賴關係表中獲取此詳細信息。
select * from user_dependencies where (referenced_type like 'TRIGGER' OR
referenced_type = 'SEQUENCE') and type = 'TABLE';
你的表現,現在的行選擇 – user2801653
有一個序列之間沒有關係Oracle中的一個表格,因此沒有列出'user_dependencies'的依賴關係。爲了獲得與表相關的觸發器,條件必須是'type ='TRIGGER'和referenced_type ='TABLE''的另一種方式。順便說一句:使用沒有通配符的'LIKE'沒有任何意義。 –
是模式中的觸發器和表。如果不是,則使用模式過濾器的all_dependencies表。 –
在SQL Server中,你可以使用sys.triggers和SYS.TABLES一樣,
select ta.name AS 'TableName', tg.name 'TriggerName' from sys.triggers tg
INNER JOIN sys.tables ta ON tg.parent_id = ta.object_id
這個問題顯然是關於Oracle的。 –
我認爲,解決方案在sql server中是否是oracle問題。請投票鼓勵我成爲新來的人...... –
Sory,但爲什麼我應該提出一個對提問者不起作用的答案? –
你可以找到觸發和序列具有以下statment
select
table_name, trigger_name, referenced_name as sequence_name
from
all_triggers
join all_dependencies
on name = trigger_name and referenced_type = 'SEQUENCE'
;
gud,但顯示列的結尾腳本結果中當前僅支持5,000行 – user2801653
- 1. 列表查看和活動
- 2. 列表框,DataTemplate中和觸發器
- 3. 列表框和滾動查看器wpf
- 4. 查看列表
- 5. 查看列表
- 6. SQL觸發器列表Oracle
- 7. ImportHTML查找所有表格和列表
- 8. 發送列表控制器查看
- 9. 列表查看顏色列表
- 10. Android按鈕列表查看列表
- 11. 列表錯誤與Asynctask列表查看
- 12. Backbone子列表查看列表
- 13. 每個表的觸發器列表?
- 14. 觸發Lookaside列表
- 15. SWT - 表查看器 - 隱藏列和從列中獲取值
- 16. 序列化表單和列表
- 17. 光標內觸發和更新表列
- 18. 檢查表和列
- 19. 查看EventListeners列表
- 20. 列表查看RowDetailsTemplate
- 21. 總和列表查看小數點
- 22. 列表查看項目(和子項目)
- 23. 查看傳呼機和列表視圖
- 24. Oracle jdbc創建一個表,序列和觸發器
- 25. 自動生成Oracle中所有表的序列和觸發器
- 26. 如何使用觸發器內部使用的所有表的列表獲取觸發器的列表
- 27. Python列表和新列表
- 28. 列表和鏈接列表
- 29. SQL列表和只列表
- 30. 列表和子列表
@Alex普爾我看到,但它顯示爲零行中選擇 – user2801653