如何更新也是主键的列?
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列。你的问题到底是什么?你这样做的错误是什么? –