1

试图运行

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

在 Oracle SQL 开发人员中。我已经让它运行了,但是当我关闭它,然后重新打开它时,我得到了这个错误:

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.

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

4

3 回答 3

1

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

于 2013-11-06T16:46:28.720 回答
1

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

INSERT INTO BOOKING_EXTRAS (EXTRAS_, EXTRAS_PRICE) VALUES ('Phone call: 1.80','1.8');
于 2013-11-06T16:55:14.317 回答
1

如果您的唯一列由序列填充,请检查以确保您的序列与您的最高值唯一列具有相同的“最后一个值”。我刚刚遇到了一个问题,其中序列的“最后一个值”远低于我唯一列中的最高值。DBA 运行了一个脚本来将序列更新为应有的数字,然后我的错误就消失了。

现在要找出为什么顺序如此错误......

于 2016-05-17T13:45:30.753 回答