如何更新也是主键的列?

问题描述:

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

在这种情况下可以使用其他设计思路吗?

UI在Swing中,DB是Oracle。

+0

更新主键没有任何意义 – Ravi

+0

是的,它没有。但是,有没有其他的设计模式可以用来实现类似的功能?正如我所说的,改变数据模型来引入一个ID也是不可行的。 –

+0

您可以更新PK列。你的问题到底是什么?你这样做的错误是什么? –

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

是的,您最好将它更改为ID列作为Primary Key,并且以后不应更新。因为,你不能有多个Primary Key。所以,你需要在这里执行一些马戏团。

  • 您需要drop现有Primary Key第一。因为,单个表中不能有多个Primary Key

  • 创建ID列,并允许NULL

  • 然后,更新顺序此列。

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

+0

感谢您的回复。但这样做的问题很少。这是一款传统产品,为什么使用名称作为主键有一些具体原因。由于您提出的方法应该是理想的方法,但我们无法完成,因为它会涉及巨大的数据模型更改。 可以有任何替代解决方案吗? –

+0

@NinadSinghNegi我想不出任何其他选择。 – Ravi

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

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