2015-02-24 78 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