0

私は最初のデータベースの実装と設計に取り組んでおり、名前や住所などの列がたくさんあります。

CHECKこれらの列に制約を設定して、DB が英数字の範囲の値のみを受け入れる (特殊文字を許可しない) ようにするのは理にかなっているようです。

私が知る限り、ユーザー定義型をサポートしていない MySQL を使用していますが、これを行う簡単な方法はありますか?

不正なデータが DB に入るのを防ぐことは価値があるように思えますが、代わりにこの複雑なチェックをアプリケーションにオフロードする必要がありますか?

4

2 に答える 2

1

mysql を使用している場合、 CHECK 制約を使用することはできません (質問はでタグ付けされているため、これが当てはまると思います) - mysql はチェック制約をサポートしていません。これらは構文で許可されていますが (他のデータベースの DDL と互換性があるため)、それ以外の場合は無視されます。

挿入および更新時に起動するトリガーをテーブルに追加して、データのコンプライアンスをチェックすることはできますが、問題が見つかった場合、mysql ストアド プロシージャから例外を発生させる方法はありません。

存在しないが、必要な意味を伝える名前を持つテーブルをヒットする回避策を使用しました。

update invalid_characters set col1 = 1;

そして、「table invalid_characters does not exist」メッセージを読んでいる人が理解できることを願っています。

于 2012-12-08T12:46:36.133 に答える
0

MySQL が特定の状況を処理する方法を変更できる設定がいくつかあります(ただし、それだけでは不十分です)。

アプリケーション側でのデータ検証に固執しますが、データベース側で検証が必要な場合は、次の 2 つのオプションがあります。

于 2012-12-08T12:50:29.470 に答える