2014-10-18 199 views
0

改变表住宅添加约束pk_restype主键(客户ID)REFERENCES customer(customerID);ORA-01735主键和外键

我想设置“住宅”表上的主键约束,但会出现ORA-01735错误,指出“无效的ALTER TABLE选项”。我也尝试了以下来建立外键关系,但它也是以相同的错误代码出现的。 (客户ID,客户类型);

改变表住宅添加约束fk_restype外键(customerID,customertype)REFERENCES customer(customerID,customertype);

回答

0

你的问题是你正在创建一个主键,就好像它是一个外键。

正确的PK语法是:

alter table residential add constraint pk_restype primary key (customerID); 

没有引用子句允许在主键,外键的。

PK表示此列customerID是唯一的,并在residential表中标识出一个唯一行。它与引用另一个表无关。

一个FK是:

alter table tab_child add constraint fk_child FOREIGN key (child_id) 
    REFERENCES tab_parent(id); 

的FK说,在表tab_childchild_id是指,由列id表约束tab_parent

+0

主键的作品,但外键语法,因为ORA-02298“无法验证(%s。%s) - 找不到父键” - 由于表有子记录,因此alter table验证约束失败。尽管父密钥的PK已被设置, – pooch 2014-10-18 01:11:42

+0

这是外键的要点。你引用了部分错误,但是忽略了其中最重要的部分,'ORA-2298'是'没有找到父键'。您的子记录的值不是在父表中为键列表示的值。你不明白什么是外键吗?子记录必须有父记录。默认情况下,您无法启用对约束无效的数据的外键。首先修复数据。 – codenheim 2014-10-18 01:23:24

+0

好吧,这是有道理的。收到了。谢谢 – pooch 2014-10-18 01:54:59