-1

INSERT INTO コマンドで外部キー エラー メッセージが表示された場合、新しいデータを挿入するために使用できる MYSQL のコマンドはどれですか?

4

3 に答える 3

1

あなたはそうしない。Insertデータベースの要件を満たす方法でデータやステートメントを作成します。

于 2013-02-27T16:16:39.270 に答える
0

重複キーエラーを処理する必要INSERT ... ON DUPLICATE KEY UPDATEがありますが、外部キーエラー用のエラーはありません。

重複キーを処理する場合は、http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.htmlを参照してください

于 2013-02-27T16:19:42.113 に答える
0

どの「外部キー エラー メッセージ」を受け取ったかを正確に指定していただけると助かります。ただし、それが最も可能性の高い候補の 1 つであると仮定すると、次のようになります。

これらのメッセージはどちらも同じことを示しています。外部キーを表す列に、親テーブルに存在しないレコードを参照する値が含まれるように、レコードを挿入 (または更新) しようとしています。

以下の例では、テーブルCustomerIDに存在しない で注文を挿入/更新しようとすると、エラー 1216 が発生します。Customers

CREATE TABLE Customers (
  CustomerID SERIAL
) Engine=InnoDB;

CREATE TABLE Orders (
  OrderID    SERIAL,
  CustomerID BIGINT UNSIGNED NOT NULL,
  FOREIGN KEY (CustomerID) REFERENCES Customers (CustomerID)
);

INSERT INTO Customers
  (CustomerID)
VALUES
  (100),
  (200)
;

INSERT INTO Orders
  (OrderID, CustomerID)
VALUES
  (1, 200), -- okay,  as CustomerID 200 exists
  (2, 300)  -- fails, as CustomerID 300 does not exist
;

他の人が示唆しているように、この問題に対する最善の解決策は、外部キー制約を満たすためにデータベース アクティビティを変更することです。

別の方法として、データベースから外部キー制約を削除することもできます (ただし、RDBMS は参照整合性を強制しません。これは通常、実行したいことです)。または、MySQL の参照整合性チェックを一時的に無効にすることもできますが、これは通常、制約違反につながる可能性のある順序で参照整合性を持つことがわかっているデータをロードする場合にのみ行われます。一般的なアプリケーションでの使用は推奨されません。

于 2013-02-27T16:36:40.407 に答える