如何使用FOREIGN KEY约束更改列的大小?

时间:2016-04-03 13:51:33

标签: sql oracle oracle10g

有两个表

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
)

我想将大小等于5DEPT_ID的{​​{1}}约束FOREIGN KEY

我尝试过更改,但却出错:

  

ORA-02267:列类型与引用的列类型

不兼容

这是因为它违反了外键约束。

创建表格时,我没有为外键提供任何名称。那么如何在不删除任何表的情况下完成它。??

3 个答案:

答案 0 :(得分:4)

我认为您需要执行以下操作:

  • 将外键约束删除到表中(您可以使用alter table drop constraint)。
  • 更改所有表格中的数据类型(您可以使用alter table modify column
  • 添加外键约束(alter table add constraint

这不需要删除任何表格。

答案 1 :(得分:0)

您必须先删除外键约束。然后执行你提到的命令。然后添加约束。

答案 2 :(得分:0)

正如其他人所建议的那样,您需要删除外键约束。至于约束的名称,我知道' sql server'对于oracle下面的链接可能有所帮助。 Display names of all constraints for a table in Oracle SQL