MyISAM ストレージエンジンの使用時に、MySQL では非常に高速のテーブルロック(複数リーダ/単一ライタ)が使用されます。このテーブル型の最大の問題は、同じテーブルに対して複数の UPDATE と遅い SELECT が混在する場合に発生します。テーブルでこのような問題が発生した場合は、別のテーブル型を使用してもかまいません。 See 章 7. MySQL のテーブル型。
MySQL はトランザクションテーブル、非トランザクションテーブルの両方で機能します。 非トランザクションテーブル(何らかのエラー発生した場合にロールバックができない)での動作をスムーズにするため、MySQL には次のルールがあります。
すべてのカラムにデフォルト値がある。
NOT NULL
カラムに対して
NULL
などの '正しくない'
値を挿入した場合や、数値列の数値が大きすぎる場合、MySQL
ではエラーを発生するのではなく、'とりうる可能な値のうちの最適値'
に値を設定する。数値の場合は 0
で、可能な最小値か最大値になる。文字列の場合は、空白文字かカラムの最大長さにあわせた文字列になる。
計算式はすべて、エラー状態を表示するのではなく、使用可能な値を返す。たとえば、1/0
の場合は、NULL
を返す。
この詳細については、See 項1.8.5. 「MySQL における制約の処理」 を参照してください。
このことは、フィールド内容のチェックに MySQL を使用するのではなく、このチェックをアプリケーションで実行する必要があることを意味します。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.