MySQL ではトランザクションテーブルとロールバックが有効でない非トランザクションテーブルの両方を使用することができます。このため、MySQL と他のデータベースとでは制約の処理が多少異なります。エラー時にロールバックすることができない非トランザクションテーブルで、多数の行を更新または挿入した場合の処理を実装しなければなりません。
基本的な概念は、MySQLサーバが検出可能なエラーをコンパイル時に生成し、受け取ったエラーから実行時にリカバリするというものですほとんどの場合にこれが実装されていますが、まだすべてについて実装されているわけではありません。
MySQL における基本的なオプションは、途中でステートメントを中止するか、問題からリカバリするためにできる限りのことを行って、処理を続行するかです。デフォルトでは、サーバは後者の方法に従います。たとえば、サーバは無効値を、近い値を持つ有効値に強制変換する可能性があります。
いくつかのSQLモードオプションでは、不良データ値の処理やエラー時にステートメント実行が継続されるか中止されるかといった処理がコントロールできます。これらのオプションを使用して、他のデータベースが不適切な入力を拒絶するのと同じように、MySQLサーバをより従来に近い方法で働くようにコンフィギュレーションを行なえます。SQLモードがサーバ起動時に広域で設定されることで、すべてのクライアントに影響を与えることができます。ランタイムに各クライアントがSQLモードを設定できることで、要求に最も適した起動状態が選択できるようになります。項4.2.6. 「SQL モード」 を参照してください。
さまざまな種類の制約に関する、MySQLサーバの処理方法を以下で説明します。