您可以更改列上有外键约束的列中的值吗?
问题描述:
如果我有一个表(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θ)
答
您可以更改Table2中的值,只要您将其更改为的值已包含在Table1中。
如果要将其更改为表1中未包含的值,可以先将值添加到Table1,然后将Table2中的值更改为该值。
例如,如果你想从伊丽莎白菲多的所有者更改为鲍勃,你可以简单地改变菲多的ID_Owner
从1
到2
。但是,如果您想将Fido的所有者从Elizabeth更改为Marie,则必须先将Marie添加到Table1
。现在
ID_Owner | Owner
---------------------
3 | Marie
该值在Table1
的情况下(其中正在引用的列),在Table2
值可以改变为3
。
答
是,可以更改ID_Owner的值在表2中,但改变的值必须为表一个条目1. 例
UPDATE Table2
SET ID_Owner = @newID
这里,@newId是一个参数其中包含要更新的值 注意:@ newId的值只能是1或2(基于table1中的值)。 如果您尝试使用表1中的值以外的值进行更新。它会给你一个错误
当你尝试它时发生了什么(答案是肯定的,BTW)? – 2014-10-28 17:25:29