使用Oracle Live SQL添加外键时遇ORA-00904错误求助
解决ORA-00904添加外键失败的问题
嘿,作为SQL新手遇到这个报错太正常了,我来帮你一步步排查!ORA-00904这个错误的核心就是数据库找不到你引用的目标列,咱们从最常见的原因开始梳理:
先确认Contact表本身有Customer_ID列
你得先保证要加外键的列存在于Contact表里。在Oracle Live SQL里执行这条命令查看表结构:DESCRIBE Contact;或者用更详细的查询语句:
SELECT column_name, data_type FROM user_tab_columns WHERE table_name = 'CONTACT';如果结果里压根没有Customer_ID,那得先把这个列补上,比如Customer表的Customer_ID是数字类型的话,执行:
ALTER TABLE Contact ADD Customer_ID NUMBER;记得要匹配Customer表中Customer_ID的数据类型哦(比如如果是
VARCHAR2(10)就改成对应类型)。检查Customer表的Customer_ID列是否存在,或是否是大小写敏感的列
同样用DESCRIBE Customer;查看Customer表的结构,确认它确实有Customer_ID列。
这里有个容易踩的坑:如果创建表时用了双引号定义大小写敏感的列(比如CREATE TABLE Customer("Customer_ID" NUMBER);),那你引用的时候必须带双引号,否则Oracle会默认找大写的列,这时候外键语句要写成:ALTER TABLE Contact ADD FOREIGN KEY ("Customer_ID") REFERENCES Customer("Customer_ID");最后仔细核对拼写是否正确
别小看拼写错误!比如是不是把Customer_ID写成了Customer_Id或者Cust_ID?Oracle在没加双引号的情况下大小写不敏感,但拼写错了绝对找不到列。
另外建议你给外键约束加个明确的名字,方便以后维护,比如:
ALTER TABLE CONTACT ADD CONSTRAINT FK_CONTACT_CUSTOMER FOREIGN KEY (CUSTOMER_ID) REFERENCES CUSTOMER(CUSTOMER_ID);
按上面的步骤排查,应该就能解决问题啦!
内容的提问来源于stack exchange,提问作者hymcode
相关产品推荐
相关产品推荐

