时间:2017-10-31 00:17:53

标签: oracle

我知道之前可能会问过这个问题,但是需要找出是否有一种方法可以确定我的表(oracle db)是否正在使用任何序列作为其列之一?我没有编写架构,所以我需要找出来做一些插入查询

2 个答案:

答案 0 :(得分:1)

尝试此操作的一种方法,虽然非常规,但可以运行这些查询以检查functionsprocedurespackages中是否使用了任何序列。

select * from user_source where 
         UPPER(TEXT) LIKE '%NEXTVAL%';   

select * from all_source where 
         UPPER(TEXT) LIKE '%NEXTVAL%';  

然后转到特定的过程,函数检查序列填充哪个列/表。 也可以使用'%CURRVAL%'

尝试此操作

如果您使用seqeunce从JDBC或其他外部应用程序运行插入,这可能无济于事。

答案 1 :(得分:0)

始终,始终声明您的Oracle数据库版本select * from v$version报告的完整数字)。

在Oracle 12中,您可以像这样查询user_tab_columns

select column_name
from   user_tab_columns
where  table_name = 'EMP' and identity_column = 'YES'

(如果您想同时对所有表执行此操作,请从table_name = ...子句中删除WHERE条件,而是将table_name添加到SELECT子句中)