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 );


数据运维技术 » ORA-30734: cannot specify scope constraint on ref column with rowid ORACLE 报错 故障修复 远程处理