2014-10-18 128 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