有两张桌子
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: 列类型与引用的列类型不兼容
这是因为它违反了外键约束。
创建表时我没有为外键提供任何名称。那么我怎样才能在不删除任何桌子的情况下做到这一点呢??
我认为你需要做到以下几点:
alter table drop constraint
)。alter table modify column
)alter table add constraint
)这不需要删除任何表。
您必须首先删除外键约束。然后执行你提到的命令。然后添加回约束。
正如其他人所建议的,您需要删除外键约束。至于约束的名称,我知道以下链接的 Oracle 'sql server' 解决方案可能会有所帮助。 显示 Oracle SQL 中表的所有约束的名称
创建表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) );