如何更新也是主键的列?

时间:2017-10-04 06:20:58

标签: oracle database-design primary-key

UI中有一个名称字段,它也是基础表中的主键列。需要在UI中使该字段可编辑。应该有一个ID作为主键,但是没有,现在引入任何ID列是不可行的。

是否有可以在这种情况下使用的替代设计理念?

UI在Swing中,DB在Oracle中。

2 个答案:

答案 0 :(得分:0)

首先,我不知道,谁认为Name字段可以是Primary Key。这是错误的数据库设计。

是的,您最好将其更改为某个IDPrimary Key,并且以后不应该更新。因为,您不能拥有多个Primary Key。所以,你需要在这里进行一些马戏团。

  • 您需要先drop现有Primary Key。因为,您不能在单个表格中拥有多个Primary Key

  • 创建ID列并允许NULL

  • 然后,按顺序更新此列。

  • 填充ID列后,您需要在此列上创建Primary Key

答案 1 :(得分:0)

您只能拥有一个主键,但您可以在表上拥有任意数量的唯一索引。因此,让现有主键成为不可变主键,并让应用程序在内部使用此键进行所有操作。向表中添加另一列并在其上创建唯一索引。让用户修改此其他字段。

另一种替代方法是使用外键ON UPDATE CASCADE声明所有子表。这样,对主键的任何更新都将级联到子表。一旦在生产中实施,退出公司并在另一个方向快速运行,并撰写一篇文章,说明您是如何在生产环境中第一个使用ON UPDATE CASCADE的人。