gpt4 book ai didi

oracle - 查找与 Oracle 表关联的序列和触发器

转载 作者:行者123 更新时间:2023-12-04 01:59:47 25 4
gpt4 key购买 nike

我使用这个查询来获取属于 Oracle 数据库用户的序列列表:

SELECT * FROM all_sequences x,all_tables B
WHERE x.sequence_owner=B.owner AND B.TABLE_NAME='my_table';

但是那个数据库用户也有更多的序列,所以查询返回数据库用户的所有序列。谁能帮我找到 my_table的特定序列使用查询,以便我可以在我的应用程序中获取自动增量 ID。

最佳答案

i want the query which fetch list of table of my database user with the sequence and triggers used in the table



您可以从 user_triggers 获取与您的表关联的触发器。看法。然后,您可以在 user_dependencies 中查找为这些触发器记录的任何依赖项。 ,其中可能包括序列(包等)以外的对象,因此将这些依赖项加入 user_sequences view 只会显示你感兴趣的那些。

像这样的事情,假设您正在查看自己的架构,并且您只对引用序列的触发器感兴趣(不一定执行“自动增量”,但可能会):
select tabs.table_name,
trigs.trigger_name,
seqs.sequence_name
from user_tables tabs
join user_triggers trigs
on trigs.table_name = tabs.table_name
join user_dependencies deps
on deps.name = trigs.trigger_name
join user_sequences seqs
on seqs.sequence_name = deps.referenced_name;

SQL Fiddle demo .

如果您实际上正在查看不同的模式,那么您需要使用 all_tables等,并过滤并加入您正在寻找的用户的所有者列。如果您想包含没有触发器的表或不引用序列的触发器,您可以使用外连接。

寻找不同模式的版本,尽管这假设您具有访问数据字典信息所需的权限 - 表等对您可见,但它们可能不是:
select tabs.table_name,
trigs.trigger_name,
seqs.sequence_name
from all_tables tabs
join all_triggers trigs
on trigs.table_owner = tabs.owner
and trigs.table_name = tabs.table_name
join all_dependencies deps
on deps.owner = trigs.owner
and deps.name = trigs.trigger_name
join all_sequences seqs
on seqs.sequence_owner = deps.referenced_owner
and seqs.sequence_name = deps.referenced_name
where tabs.owner = '<owner>';

如果看不到它们,那么您可能需要查看 DBA View ,如果您有足够的权限:
select tabs.table_name,
trigs.trigger_name,
seqs.sequence_name
from dba_tables tabs
join dba_triggers trigs
on trigs.table_owner = tabs.owner
and trigs.table_name = tabs.table_name
join dba_dependencies deps
on deps.owner = trigs.owner
and deps.name = trigs.trigger_name
join dba_sequences seqs
on seqs.sequence_owner = deps.referenced_owner
and seqs.sequence_name = deps.referenced_name
where tabs.owner = '<owner>';

关于oracle - 查找与 Oracle 表关联的序列和触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17142980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com