【发布时间】:2010-10-26 16:24:45
【问题描述】:
我已经构建了一个“最佳猜测”查询来获取序列的相关 table.column。有没有更好、更简洁的方法来获得这种关系?
select ut.table_name, ut.table_owner, ut.trigger_name, us.sequence_name
,upper(dbms_metadata.get_ddl('TRIGGER', ut.trigger_name, ut.table_owner
)) triger_ddl
,to_char(regexp_substr(
upper(dbms_metadata.get_ddl('TRIGGER', ut.trigger_name, ut.table_owner))
,'.*(;|BEGIN)[^;]*' || us.sequence_name || '.NEXTVAL[^;]*;.*'
)) sequence_stmt
,regexp_substr(
to_char(regexp_substr(
upper(dbms_metadata.get_ddl('TRIGGER', ut.trigger_name, ut.table_owner))
,'.*;|BEGIN[^;]*' || us.sequence_name || '.NEXTVAL[^;]*;.*'
))
,'(INTO[[:blank:]]*)*:NEW\.([[:alpha:]]+|"[^"]+")([[:blank:]]*:=)*'
) sequence_column
from user_triggers ut
,user_dependencies ud
,user_sequences us
where UD.NAME = ut.trigger_name
and ud.type = 'TRIGGER'
and UD.REFERENCED_NAME = us.sequence_name
and UD.REFERENCED_TYPE = 'SEQUENCE'
我需要这个用于确定插入过程的默认值的表 api code_generator。
【问题讨论】:
-
序列生成列是否总是主键?
-
如果您正在编写 TAPI 代码生成器,最好的办法是设计并强制执行序列的命名约定 - 然后让所有设计人员和开发人员同意遵守它。
标签: sql oracle plsql oracle11g