Insert语句尝试包含重复键

时间:2013-11-06 16:42:47

标签: sql database oracle syntax syntax-error

尝试运行

INSERT INTO BOOKING_EXTRAS (BOOKING_ID, EXTRAS_, EXTRAS_PRICE) VALUES ('1','Phone call: 1.80','1.8');
Oracle SQL Developer中的

。我已经运行但是当我关闭它,然后重新打开它我得到这个错误:

Error starting at line 1 in command:
INSERT INTO BOOKING_EXTRAS (BOOKING_ID, EXTRAS_, EXTRAS_PRICE) VALUES ('1','Phone call: 1.80','1.8')
Error report:
SQL Error: ORA-00001: unique constraint (COURSEWORK_XE.BOOKING_EXTRAS_PK) violated
00001. 00000 -  "unique constraint (%s.%s) violated"
*Cause:    An UPDATE or INSERT statement attempted to insert a duplicate key.
       For Trusted Oracle configured in DBMS MAC mode, you may see
       this message if a duplicate entry exists at a different level.
*Action:   Either remove the unique restriction or do not insert the key.

我该如何解决这个问题?它发生在我跑的每张桌子上!

3 个答案:

答案 0 :(得分:1)

您需要清除表或插入新信息,数据库不需要重复行,因为这样就无法在以后找到正确的行。

答案 1 :(得分:1)

如果您的唯一列由序列填充,请检查以确保您的序列具有相同的最后一个值'作为您的最高价值的唯一列。 我刚遇到一个问题,其中序列的最后一个值是'这远远低于我独特专栏中的最高值。 DBA运行了一个脚本来将序列更新为该数字应该是什么,并且我的错误消失了。

现在找出序列错误的原因......

答案 2 :(得分:0)

此外,如果 BOOKING_ID (如果我猜对了,当前作为主键)实际上对你没什么意义,你可以在你的架构中将其设置为AUTO INCREMENT,然后你不需要为BOOKING_ID插入值,系统会自动为您找到一个不重复的值。这可能会为您节省很多精力。

INSERT INTO BOOKING_EXTRAS (EXTRAS_, EXTRAS_PRICE) VALUES ('Phone call: 1.80','1.8');