如何在PL/SQL中使用序列查找父表?

Adr*_*ian 1 sql oracle plsql

select SEQUENCE_OWNER, SEQUENCE_NAME from ALL_SEQUENCES 
Run Code Online (Sandbox Code Playgroud)

我们假设上面的代码会给我以下结果.

<Table Name: ALL_SEQUENCES> 
SEQUENCE_OWNER      SEQUENCE_NAME 
schema1             table1_name_seq       
schema1             table2_name_seq       
schema2             table1_name_seq   
Run Code Online (Sandbox Code Playgroud)

我很确定每个序列都有一个对应的父表,序列用于该表.所以,我想使用sequence_name找到父表.例如,如果我知道具有序列所有者schema1的序列名table1_name_seq,我应该找到表名schema1.table1.

建议不要使用SUBSTRING或REPLACE函数重新格式化字符串,因为sequence_name不遵循"良好一致的命名标准",我无权更改它.

我找不到有关此事的任何信息.非常感谢您的帮助!

Raj*_*ore 6

简答:序列和表之间不是一对一的关系.

长(呃)答案:

您可以对多个表使用单个序列(例如,使用多个触发器).

您必须在数据库对象代码中搜索序列名称,以查看可以使用它的所有位置.

即便如此,你也可能会错过,因为你可以使用PLSQL代码从任何应用程序中的序列中获得下一个值.

  • 这是正确的,与身份与特定表绑定的SQL Server不同,Oracle Sequences是不同的数据库对象,当开发人员仅将该序列用于一个表时,它们只与表相关...之间没有硬连接他们 (4认同)