2014-10-28 46 views
0

如果我有一個表(Table2),其中有一列包含外鍵引用Table1,我可以更改該列中的值嗎? (只要它正在被改變到被包含在表1中的值)您可以更改列上有外鍵約束的列中的值嗎?

Table1 

ID_Owner | Owner 
----------------------- 
    1  | Elizabeth 
    2  | Bob 


Table2 

ID_Pet | Pet  | ID_Owner 
------------------------------------- 
    1  | Fido  | 1 
    2  | Rufus  | 2 

(例如,如果我想菲多的所有者改變給Bob,我可以從1改變ID_Owner到2θ)

+3

當你嘗試它時發生了什麼(答案是肯定的,BTW)? – 2014-10-28 17:25:29

回答

2

您可以更改Table2中的值,只要您將其更改爲的值已包含在Table1中。

如果要將其更改爲表1中未包含的值,可以先將值添加到Table1,然後將Table2中的值更改爲該值。


例如,如果你想從伊麗莎白菲多的所有者更改爲鮑勃,你可以簡單地改變菲多的ID_Owner12。但是,如果您想將Fido的所有者從Elizabeth更改爲Marie,則必須先將Marie添加到Table1。現在

ID_Owner | Owner 
--------------------- 
    3  | Marie 

該值在Table1的情況下(其中正在引用的列),在Table2值可以改變爲3

1

是,可以更改ID_Owner的值在表2中,但改變的值必須爲表一個條目1. 例

UPDATE Table2 
 
SET ID_Owner = @newID

這裏,@newId是一個參數其中包含要更新的值 注意:@ newId的值只能是1或2(基於table1中的值)。 如果您嘗試使用表1中的值以外的值進行更新。它會給你一個錯誤