通常、主キー制約、一意キー制約または外部キー制約に違反するデータ変更ステートメント (INSERT
や UPDATE
など) でエラーが発生します。 InnoDB
などのトランザクションストレージエンジンを使用している場合、MySQL ではステートメントが自動的にロールバックされます。 非トランザクションストレージエンジンを使用している場合、MySQL は、エラーが発生した行でステートメントの処理を停止し、残りの行を未処理のままにしておきます。
MySQL では、INSERT
や UPDATE
などに対して IGNORE
キーワードをサポートします。 これを使用する場合は、MySQL は、プライマリキーまたは一意キーの違反を無視し、次の行を処理し続けます。 使用しているステートメントに関するセクション (セクション13.2.6「INSERT ステートメント」やセクション13.2.13「UPDATE ステートメント」など) を参照してください。
mysql_info()
C API 関数で、実際に挿入または更新される行数についての情報を取得できます。 SHOW WARNINGS
ステートメントを使用することもできます。 mysql_info()およびセクション13.7.7.42「SHOW WARNINGS ステートメント」を参照してください。
InnoDB
テーブルおよび NDB
テーブルでは、外部キーがサポートされます。 セクション1.7.3.2「FOREIGN KEY の制約」を参照してください。