如何更改具有 FOREIGN KEY 约束的列的大小?
How to change the size of a column with FOREIGN KEY constraint?
有两个table
DEPT (
DEPT_ID NUMBER(5) PRIMARY KEY,
DEPT_NAME VARCHAR2(10)
);
COURSE (
COURSE_ID NUMBER(5) PRIMARY KEY,
COURSE_NAME VARCHAR2(15),DEPT_ID NUMBER(5),
FOREIGN KEY(DEPT_ID) REFERENCES DEPT
)
我想将具有 FOREIGN KEY
约束的列 DEPT_ID
的大小更改为等于 5
。
我尝试更改但出现错误:
ORA-02267: column type incompatible with referenced column type
这是因为违反了外键约束。
我在创建 tables 时没有为外键提供任何名称。那么我怎样才能在不删除任何 table.??
的情况下做到这一点
我认为您需要执行以下操作:
- 删除表的外键约束(您可以使用
alter table drop constraint
)。
- 更改所有表中的数据类型(您可以使用
alter table modify column
)
- 重新添加外键约束 (
alter table add constraint
)
这不需要删除任何表。
您必须先删除外键约束。然后执行你提到的命令。然后加回约束。
按照其他人的建议,您需要删除外键约束。至于约束的名称,我知道 link 下面的 oracle 'sql server' 的解决方案可能会有所帮助。 Display names of all constraints for a table in Oracle SQL
有两个table
DEPT (
DEPT_ID NUMBER(5) PRIMARY KEY,
DEPT_NAME VARCHAR2(10)
);
COURSE (
COURSE_ID NUMBER(5) PRIMARY KEY,
COURSE_NAME VARCHAR2(15),DEPT_ID NUMBER(5),
FOREIGN KEY(DEPT_ID) REFERENCES DEPT
)
我想将具有 FOREIGN KEY
约束的列 DEPT_ID
的大小更改为等于 5
。
我尝试更改但出现错误:
ORA-02267: column type incompatible with referenced column type
这是因为违反了外键约束。
我在创建 tables 时没有为外键提供任何名称。那么我怎样才能在不删除任何 table.??
的情况下做到这一点我认为您需要执行以下操作:
- 删除表的外键约束(您可以使用
alter table drop constraint
)。 - 更改所有表中的数据类型(您可以使用
alter table modify column
) - 重新添加外键约束 (
alter table add constraint
)
这不需要删除任何表。
您必须先删除外键约束。然后执行你提到的命令。然后加回约束。
按照其他人的建议,您需要删除外键约束。至于约束的名称,我知道 link 下面的 oracle 'sql server' 的解决方案可能会有所帮助。 Display names of all constraints for a table in Oracle SQL