1

我设计了一个带有外键约束的大型数据库,以防止插入违反这些约束的损坏数据。我希望,当我用 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 ...来进行条件插入。举个例子:有两个表countrycitycountry_idcity引用的列到对应的列country

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

以下INSERT语句无条件地插入条目。如果country中不存在值为 的行,则会失败: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 回答