Sql Insert语句试图包含重复的键
试图逃跑Sql Insert语句试图包含重复的键,sql,database,oracle,syntax,syntax-error,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_, EX
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.
我该如何解决这个问题?这发生在我跑的每一张桌子上 您需要清除表或插入新信息,数据库不需要重复的行,因为这样以后就不可能找到正确的行。此外,如果预订ID(如果我猜正确,当前用作主键)实际上对您没有意义,您可以将其设置为模式中的自动增量,之后您不需要为BOOKING_ID插入值,系统将自动找到一个不重复的值。这可能会为您节省很多精力
INSERT INTO BOOKING_EXTRAS (EXTRAS_, EXTRAS_PRICE) VALUES ('Phone call: 1.80','1.8');
如果您的唯一列由序列填充,请检查以确保您的序列具有与最高值唯一列相同的“最后一个值”。 我刚刚遇到一个问题,序列中的“最后一个值”远低于我唯一列中的最高值。DBA运行了一个脚本,将序列更新为应该的数字,我的错误消失了
现在要找出序列为何如此错误…检查该表,该表似乎有一条主键相同的记录。这也是非常错误的。除非列上有唯一的约束(在您的情况下,可能是预订id),否则可以复制