1

これらの制約に違反する破損したデータの挿入を防ぐために、外部キー制約を持つ大規模な DB を設計しました。Python でデータを挿入するときに、外部キーの制約が失敗したすべてのエントリをスキップして、「実際の」データのみがデータベースに挿入されることを期待していました。フィルターみたいなやつ。ただし、「破損した」エントリが発生すると、スクリプトは停止します。彼に続行させ、不要な行をスキップさせる方法はありますか?

ご協力いただきありがとうございます!

4

2 に答える 2

0

ハンドラーを使用する必要があります: http://dev.mysql.com/doc/refman/5.1/en/declare-handler.html

そしてcontinueオプションを選択

いくつかのハンドラーの例:

MySQL ストアド プロシージャのエラー処理

于 2013-10-12T13:34:12.420 に答える
0

INSERT INTO ... SELECT ...条件付き挿入を行うために使用できます。例を見てみましょう: 2 つのテーブルcountrycityがあり、対応する column from country への参照からcountry_idがあります。city

  • country(country_id,name)
  • city(city_id,name,country_id)

次のINSERTステートメントは、エントリを無条件に挿入します。に の値を持つ行が存在しない場合、失敗します:country_id

INSERT INTO city (city_id, name, country_id)
          VALUES (:city_id, :name, :country_id);

次のステートメントは、countryに対応する行が存在する場合にのみ、エントリを挿入します。そうしないと、何も起こりません。

INSERT INTO city (city_id, name, country_id)
       SELECT :city_id, :name, :country_id
       FROM country
       WHERE country_id=:country_id;
于 2013-10-12T13:26:21.547 に答える