ORA-30734: cannot specify scope constraint on ref column with rowid ORACLE 报错 故障修复 远程处理
文档解释
ORA-30734: cannot specify scope constraint on ref column with rowid
Cause: An attempt was made to specify scope constraint on a REF column with the rowid constraint.
Action: Remove the scope constraint and then retry the operation.
错误说明
ORA-30734: 不能在rowid上指定作用范围约束,是由ORACLE数据库在执行建表语句时可能遇到的一个错误。如果试图给表中的参照列指定作用范围约束,此错误消息会出现。
常见案例
此错误是在ORACLE数据库中试图创建一个表,其中包含一个“Rowid”列和一个引用列,并在引用列上指定有作用范围约束时发生的。 例如:CREATE TABLE my_table ( id number ,ref_id ROWID CONSTRAINT ref_check CHECK(ref_id to_char(rowid)=ref_id) );
解决方法
将参照列类型从rowid更改为字符串或其他值,然后按默认方式指定作用范围约束:
CREATE TABLE my_table ( id number ,ref_id VARCHAR2 (30) CONSTRAINT ref_check CHECK (ref_id BETWEEN ‘A’ AND ‘F’) );
如果已经识别了使用rowid的列,则还可以添加_RID_提示,以强制Oracle忽略列作用范围检查:
CREATE TABLE my_table ( id number ,ref_id ROWID CONSTRAINT ref_check CHECK (ref_id to_char (rowid)=ref_id) USING_ROWID );