我想写ALTER TABLE SQL语句向表中添加一列。该列分类为NUMBER数据类型,NOT NULL属性和主键。 但是它显示的是ORA-01758。
ALTER TABLE INSURANCE
ADD (INS_ID NUMBER PRIMARY KEY NOT NULL);
如果我选择DEFAULT 0,它确实解决了问题,但是我无法设置主键,并且INS_ID显示0,而不是(空) 由于此表的数据来自excel文档,因此在不删除数据的情况下应该如何解决?
如果必须删除数据,如何轻松恢复?
答案 0 :(得分:2)
通常,您可以:
1不是您的选择,因为如果要将这些值用作主键,则它们必须是唯一的。您可以考虑将列与序列相关联,或者将其设为同一列
如果自动生成的递增数字不如PK(例如,关键数据已经已知或已计算),则2是您可能选择的选项
3是您已经说过的不可选项
考虑到持续的维护需求-除非您使用提供唯一值的序列/身份或类似物,否则需要升级每个将数据写入该表的前端应用程序,以了解其具有主键。排。如果有很多要更新的内容,并且您不希望以特定的形式或从其他地方的现有值/关系获得PK,那么拥有自动编号PK可能会有所帮助。如果此数据需要与具有密钥的现有数据相关,则需要升级前端应用程序,以便它们可以尊重新的PK