1

実行しようとしています

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.

どうすればこれを修正できますか? 私が実行するすべてのテーブルで起こっています!

4

3 に答える 3

1

一意の列がシーケンスによって入力されている場合は、シーケンスの「最後の値」が最大値の一意の列と同じであることを確認してください。シーケンスの「最後の値」が、一意の列の最大値よりもはるかに低いという問題が発生しました。DBA がスクリプトを実行して、シーケンスを本来あるべき数値に更新したところ、私のエラーは解消されました。

なぜシーケンスが間違っていたのかを調べるために...

于 2016-05-17T13:45:30.753 に答える
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 に答える