我想通过写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文档,因此在不删除数据的情况下应该如何解决?
如果必须删除数据,如何轻松恢复?
通常,您可以:
1不是您的选择,因为如果要将这些值用作主键,则它们必须是唯一的。您可以考虑将列与序列相关联,或将其设为身份列]
如果自动生成的递增数字不如PK(例如,密钥数据已知或已计算出来),则您可能选择2,
3,您已经说过这不是一个选项
请考虑一下持续的维护要求-除非您使用的序列/标识或类似物为其提供唯一值,否则将需要升级每个将数据写入该表的前端应用程序,以了解它具有主键。行。如果有很多要更新的内容,并且您不希望以特定的形式或从其他地方的现有值/关系获得PK,那么拥有自动编号PK可能会有所帮助。如果此数据需要与具有密钥的现有数据相关,则需要升级前端应用程序,以便它们可以尊重新的PK