UI中有一個名稱字段,它也是基礎表中的主鍵列。需要在UI中使該字段可編輯。應該有一個應該作爲主鍵的ID,但是現在沒有,現在也不可能引入任何ID列。如何更新也是主鍵的列?
在這種情況下可以使用其他設計思路嗎?
UI在Swing中,DB是Oracle。
UI中有一個名稱字段,它也是基礎表中的主鍵列。需要在UI中使該字段可編輯。應該有一個應該作爲主鍵的ID,但是現在沒有,現在也不可能引入任何ID列。如何更新也是主鍵的列?
在這種情況下可以使用其他設計思路嗎?
UI在Swing中,DB是Oracle。
首先,我不知道,誰認爲Name
字段可以是Primary Key
。這是有史以來錯誤的數據庫設計。
是的,您最好將它更改爲ID
列作爲Primary Key
,並且以後不應更新。因爲,你不能有多個Primary Key
。所以,你需要在這裏執行一些馬戲團。
您需要drop
現有Primary Key
第一。因爲,單個表中不能有多個Primary Key
。
創建ID
列,並允許NULL
然後,更新順序此列。
一旦您的ID
列被填充,您需要在此列上創建Primary Key
。
感謝您的回覆。但這樣做的問題很少。這是一款傳統產品,爲什麼使用名稱作爲主鍵有一些具體原因。由於您提出的方法應該是理想的方法,但我們無法完成,因爲它會涉及巨大的數據模型更改。 可以有任何替代解決方案嗎? –
@NinadSinghNegi我想不出任何其他選擇。 – Ravi
您只能有一個主鍵,但您可以在表上有任意數量的唯一索引。所以讓現有的主鍵是不變的主鍵,並讓應用程序在內部使用這個鍵作爲一切。將另一列添加到表中並在其上創建唯一索引。讓用戶修改這個其他字段。
另一種替代方法是使用外鍵ON UPDATE CASCADE聲明所有子表。這樣,主鍵的任何更新都會級聯到子表。一旦在生產環境中實施,退出公司並在另一個方向快速運行,並撰寫一篇關於您是如何成爲在生產環境中使用ON UPDATE CASCADE的第一人的文章。
更新主鍵沒有任何意義 – Ravi
是的,它沒有。但是,有沒有其他的設計模式可以用來實現類似的功能?正如我所說的,改變數據模型來引入一個ID也是不可行的。 –
您可以更新PK列。你的問題到底是什麼?你這樣做的錯誤是什麼? –