アイテム名のテーブルがあります。asp.netには、ユーザーがテーブルに追加する新しいアイテムを入力できるテキストボックスがあります。ユーザーがテーブルに重複するアイテム名を入力することを制限する必要があります。ユーザーがテーブルに既に存在するテキストボックスにテキスト(アイテム名)を入力し、保存ボタンをクリックすると、アイテムが既に存在するというメッセージ/検証を表示する必要があります。どうすればいいですか??
4 に答える
テーブルの [名前] 列に一意の制約を追加します。誰かが重複した名前を追加しようとすると、SQL Server は execption を発生させます。ユーザーに適切なメッセージを表示するクライアント コードの例外に対処する必要があります。
あなたはコードを書いていないので:
Ajaxを使用していると仮定すると、テキストボックスのテキストプロパティが変更されると、アイテムのDBが存在しないことを確認できます。
プレーンなasp.netを使用している場合は、アイテムをデータベースに追加して例外をキャッチしてみてください。挿入ロジック内に例外があり、その重複キーに関連する場合 (エラー番号 2601)、テキスト ボックス ビジュアルを無効にします。
それが役立つことを願っています。
次のクエリを実行できます。
SELECT checking_col_name
FROM your_table
WHERE checking_col_name = your_textbox_value
GROUP BY checking_col_name
HAVING ( COUNT(checking_col_name) > 0 )
上記のクエリが行を返す場合、値が指定されたテーブルの列に既に存在していると推測できるため、それに応じてコードに条件を適用できます.....
Wiktor Zychla が、複数のユーザー環境を扱う場合に上記のクエリに問題が発生する可能性があることを示唆しているため、チェックすることをお勧めしますConstraint
.....重複行がないことを保証するUNIQUE Constraint を持つことができます (一意の値のみを持つ) ....クエリを実行して重複する値を挿入すると、コードでトレースできるエラーがスローされるため、条件に適用できます......
テーブルの列に一意の制約と一意のインデックスを使用できName
ます。重複した名前が入力されると、SQL Server は例外を発生させます。