实体将其状态作为 FK 存储到状态 table。状态更改后我可以更新 FK 吗?
Entity storing it's status as a FK to a status table. Can i update the FK once the status changes?
我设计了一个 table 'A',其中它的当前状态是一个 属性 这也是一个 FK 到 table 'B'包含状态。在应用程序周期的某个时候,table 'A' 中显示的实体的状态将发生变化,我想知道我是否可以用新状态更新 FK 列,这显然也包含在table 'B'.
这对我来说似乎很正常,但由于我在所有搜索中都没有找到一个 post/article/question,所以我不确定它是 acceptable 还是完全错误的。
由于 table A 具有 table B 的外键,您可以简单地将 table A 上的值更新为 table B 中的新值。
例如,您有
table A: id, name, status_id (外键)
table B: id, status_name
在 table B 你有:
1, "started"
2, "stopped"
3, "suspended"
在 table A 你有:
1, "application_A", 1
2, "application_B", 1
如果要停止 application_A,只需将 status_id
列中的值更新为 2。
相反,这很困难:如果出于某些(上帝遗弃的)原因,您必须将 table B 中的 id
从 2 更新为 4,其中 status_name 是 "stopped" - 只有这样你才需要挖掘 ON UPDATE CASCADE
或类似的措施。
我设计了一个 table 'A',其中它的当前状态是一个 属性 这也是一个 FK 到 table 'B'包含状态。在应用程序周期的某个时候,table 'A' 中显示的实体的状态将发生变化,我想知道我是否可以用新状态更新 FK 列,这显然也包含在table 'B'.
这对我来说似乎很正常,但由于我在所有搜索中都没有找到一个 post/article/question,所以我不确定它是 acceptable 还是完全错误的。
由于 table A 具有 table B 的外键,您可以简单地将 table A 上的值更新为 table B 中的新值。
例如,您有
table A: id, name, status_id (外键)
table B: id, status_name
在 table B 你有:
1, "started"
2, "stopped"
3, "suspended"
在 table A 你有:
1, "application_A", 1
2, "application_B", 1
如果要停止 application_A,只需将 status_id
列中的值更新为 2。
相反,这很困难:如果出于某些(上帝遗弃的)原因,您必须将 table B 中的 id
从 2 更新为 4,其中 status_name 是 "stopped" - 只有这样你才需要挖掘 ON UPDATE CASCADE
或类似的措施。