2015-02-24 83 views
0

我设计了一个表“A”,其中它的当前状态是一个属性,也是包含状态的表“B”中的一个FK。在应用程序周期的某个地方,表格'A'中呈现的实体的状态将会改变,并且我想知道是否我只是可以用新状态更新FK列表,这显然也包含在表格'B'中。实体将其状态存储为状态表的FK。一旦状态改变,我可以更新FK吗?

对我来说这似乎很正常,但因为我没有在我的所有搜索中发现一篇文章/文章/问题,我不确定它是可接受的还是完全错误的。

+1

所以你应该改变表B中的代码,并且该代码的表A中的所有实例也会被更改?这听起来像你想[[更新CASCADE]](https://technet.microsoft.com/en-us/library/ms186973(v = sql.105).aspx)。 – 2015-02-24 18:55:57

+1

这不是我如何阅读@BaconBits的问题。我想他是问他是否可以将表A中的FK列的值更新为表B的PK的另一个有效值,答案是肯定的,为什么不呢? – 2015-02-24 19:05:26

+1

@TabAlleman你可能是对的。我想我在这个例子的模糊性中转身了。 – 2015-02-24 19:24:36

回答

2

表A有外键表B,你可以在表A中的值简单地更新到表B.

例如一个新的价值,你有
表答:ID,姓名,STATUS_ID (外键)
表B:表B中的id,status_name

您有:

1, "started" 
2, "stopped" 
3, "suspended" 

表A你有:

1, "application_A", 1 
2, "application_B", 1 

如果你想停止application_A,只需更新status_id列2

值这是另一种方式圆这是困难的:如果由于某种(上帝离弃)的原因,你将不得不更新id从表B中的2到4表示status_name为“停止”的行 - 只有这样你才能挖掘出ON UPDATE CASCADE或类似的度量。

+0

谢谢,我知道这个问题非常“白痴”,但除了联想表,这是我在作为程序员工作的4〜5年中从未做过的事情,所以我一直都知道它将工作,我不知道是否是正确的事情。 – v1n1akabozo 2015-02-24 19:49:41