2016-05-23 7 views
0

私は入力のリストを持っています。各入力は、最大15桁の数値か最大20文字の英数字でなければなりません。MYSQLの入力の制約を維持する

データベースに格納する方法がわかりません。また、各入力に対して、私の右に感じることのないコードの制約をハードコードする必要があります。

+0

あなたはテーブルデータ型に関するスキーマを定義するために勉強しなければならない – Eric

+0

@Eric私は、inout型のスキーマを知っています。私は制約を定義したい変数のリストを持っています。 –

答えて

1

データベースに対する制約は、検証とは異なるものです。私はあなたのアプリケーションからの入力を検証するためにあなたが本当に探していると思います。たとえば、15桁の数字でフィールドを指定し、そのようなものを検証するためのトリガーを作成することはできますが、mysqlに小数点以下15桁の数値を格納する必要はありませんBIGINTで、9223372036854775807までの数字が15桁を超えることができます。この種のスキーマを設定する簡単な方法はありません。

たとえば、最大で20文字の英数字のような他のケースは、たとえばVARCHAR(20)を使用して実行できますが、それでもデータベースに依存することは現実的ではありません。

あなたの入力をUIレベルで検証し、セキュリティの強化ステップとして、データベースモデルや挿入/更新をどこでもチェックしてください。

データベース・スキーマで制約を実行し、コードの特定の検証がアプリケーション・ビジネス・ルールが入力に柔軟性を持たせる必要がある方法で変更された場合の良い例の1つです。コードが10桁または15桁のどちらでもかまいませんが、データベースで両方の長さの数値を格納できるようにしたい場合は、アプリケーションの検証時にどちらのケースでも検証します。

+0

私はデータベースの制約について知っていますが、あなたが言及した明白な理由のためにそれを使用したくありません。だから私の入力の通常の制約のために、私は自分のコードでそれを置くことをお勧めしますか? –

+0

@AkashdeepSalujaはい、制約はデータベース・スキーマのルールで、フィールド "code"はbigintであり、nullにはできませんが、コードでは数値であることを検証します。最大15桁要約:両方を使用します。 –

+0

@AkashdeepSaluja最新の回答をご覧ください。特定のシナリオを追加しました。 –

関連する問題