我设计了一个表“A”,其中它的当前状态是一个属性,也是包含状态的表“B”中的一个FK。在应用程序周期的某个地方,表格'A'中呈现的实体的状态将会改变,并且我想知道是否我只是可以用新状态更新FK列表,这显然也包含在表格'B'中。实体将其状态存储为状态表的FK。一旦状态改变,我可以更新FK吗?
对我来说这似乎很正常,但因为我没有在我的所有搜索中发现一篇文章/文章/问题,我不确定它是可接受的还是完全错误的。
我设计了一个表“A”,其中它的当前状态是一个属性,也是包含状态的表“B”中的一个FK。在应用程序周期的某个地方,表格'A'中呈现的实体的状态将会改变,并且我想知道是否我只是可以用新状态更新FK列表,这显然也包含在表格'B'中。实体将其状态存储为状态表的FK。一旦状态改变,我可以更新FK吗?
对我来说这似乎很正常,但因为我没有在我的所有搜索中发现一篇文章/文章/问题,我不确定它是可接受的还是完全错误的。
表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
或类似的度量。
谢谢,我知道这个问题非常“白痴”,但除了联想表,这是我在作为程序员工作的4〜5年中从未做过的事情,所以我一直都知道它将工作,我不知道是否是正确的事情。 – v1n1akabozo 2015-02-24 19:49:41
所以你应该改变表B中的代码,并且该代码的表A中的所有实例也会被更改?这听起来像你想[[更新CASCADE]](https://technet.microsoft.com/en-us/library/ms186973(v = sql.105).aspx)。 – 2015-02-24 18:55:57
这不是我如何阅读@BaconBits的问题。我想他是问他是否可以将表A中的FK列的值更新为表B的PK的另一个有效值,答案是肯定的,为什么不呢? – 2015-02-24 19:05:26
@TabAlleman你可能是对的。我想我在这个例子的模糊性中转身了。 – 2015-02-24 19:24:36