如何更改具有 FOREIGN KEY 约束的列的大小?

问题描述 投票:0回答:4

有两张桌子

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
)

我想将具有

5
约束的列
DEPT_ID
的大小更改为等于
FOREIGN KEY

我尝试更改,但出现错误:

ORA-02267: 列类型与引用的列类型不兼容

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

创建表时我没有为外键提供任何名称。那么我怎样才能在不删除任何桌子的情况下做到这一点呢??

sql oracle oracle10g
4个回答
5
投票

我认为你需要做到以下几点:

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

这不需要删除任何表。


0
投票

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


0
投票

正如其他人所建议的,您需要删除外键约束。至于约束的名称,我知道以下链接的 Oracle 'sql server' 解决方案可能会有所帮助。 显示 Oracle SQL 中表的所有约束的名称


0
投票

创建表Table1 ( id int 身份(1,1), User_id as 'ABC'+Right('0000'+cast(id as varchar(20)),20) 持久唯一, 薪资整数 );

sp_help Table1 -- 检查 User_id 的长度并在参考表中给出该长度

创建表Table2 ( id int 身份(1,1), User_id_Table2 varchar(23) 外键引用Table1(User_id), 名称 varchar(50) );

© www.soinside.com 2019 - 2024. All rights reserved.