2017-10-04 47 views
0

UI中有一個名稱字段,它也是基礎表中的主鍵列。需要在UI中使該字段可編輯。應該有一個應該作爲主鍵的ID,但是現在沒有,現在也不可能引入任何ID列。如何更新也是主鍵的列?

在這種情況下可以使用其他設計思路嗎?

UI在Swing中,DB是Oracle。

+0

更新主鍵沒有任何意義 – Ravi

+0

是的,它沒有。但是,有沒有其他的設計模式可以用來實現類似的功能?正如我所說的,改變數據模型來引入一個ID也是不可行的。 –

+0

您可以更新PK列。你的問題到底是什麼?你這樣做的錯誤是什麼? –

回答

0

首先,我不知道,誰認爲Name字段可以是Primary Key。這是有史以來錯誤的數據庫設計。

是的,您最好將它更改爲ID列作爲Primary Key,並且以後不應更新。因爲,你不能有多個Primary Key。所以,你需要在這裏執行一些馬戲團。

  • 您需要drop現有Primary Key第一。因爲,單個表中不能有多個Primary Key

  • 創建ID列,並允許NULL

  • 然後,更新順序此列。

  • 一旦您的ID列被填充,您需要在此列上創建Primary Key

+0

感謝您的回覆。但這樣做的問題很少。這是一款傳統產品,爲什麼使用名稱作爲主鍵有一些具體原因。由於您提出的方法應該是理想的方法,但我們無法完成,因爲它會涉及巨大的數據模型更改。 可以有任何替代解決方案嗎? –

+0

@NinadSinghNegi我想不出任何其他選擇。 – Ravi

0

您只能有一個主鍵,但您可以在表上有任意數量的唯一索引。所以讓現有的主鍵是不變的主鍵,並讓應用程序在內部使用這個鍵作爲一切。將另一列添加到表中並在其上創建唯一索引。讓用戶修改這個其他字段。

另一種替代方法是使用外鍵ON UPDATE CASCADE聲明所有子表。這樣,主鍵的任何更新都會級聯到子表。一旦在生產環境中實施,退出公司並在另一個方向快速運行,並撰寫一篇關於您是如何成爲在生產環境中使用ON UPDATE CASCADE的第一人的文章。