2014-10-28 37 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中的值以外的值进行更新。它会给你一个错误