データベーステーブル構造内で列が一意になる場合、挿入する新しい値がスクリプトを介してテーブルに既に存在するかどうかをチェックする必要はありますか?それとも、DBMSに新しい値ではない値を挿入するだけでいいですか?ユニークな列を適用する
0
A
答えて
1
データベースに挿入する前に、データの検証を行う必要があります。つまり、独自の定義された列に一意でない値を挿入しようとすると、SQLexceptionが発生します。クエリが何を返す場合
挿入する前にこれを検証するために、あなたは、例えば、単にそれは、SQLExceptionをスローしますように挿入しようとしない、
select 1
from mytable_with_unique_column
where my_unique_column = myNewValue
を行うことができます。
2
重複する値を一意の列に挿入しようとすると、挿入クエリが失敗します。したがって、挿入クエリがうまくいっているかどうかを確認することをお勧めします。あなたの挿入クエリが通過したかどうかは、状況に関係なく常に確認する必要があります:)
1
ユニーク制約の検証は間違いなく過剰です。
列に一意制約を設定すると、この列に対して暗黙的な索引が作成されます。したがって、DBMSはあなたのデータをはるかに迅速に検証できます。残念ながら、列に重複値を挿入しようとすると、対処しなければならない制約違反例外が発生します(ただし、スクリプト検証を使用している間にそのようなエラーに対処する必要があります)。
幸運。
1
INSERT文と検証は1つの文に選択し組み合わせることができます。すでに与えられた一意の値を持つ行が存在しない場合
insert into mytable_with_unique_column (...) values (...)
where not exists
(
select 1
from mytable_with_unique_column
where my_unique_column = myNewValue
)
はこれが唯一の新しい行を挿入します。
関連する問題
- 1. 高速でユニークな値に関数を適用するR
- 2. ユニークでない日付の列には週2回適用しますか?
- 3. ユニークなフィルタを適用したインデックスとのマージ
- 4. ユニークなPHP配列
- 5. ユニークでないすべての列で@jointableを使用する
- 6. ユニークな文字列ジェネレータ
- 7. バイナリ配列のユニークなサブシーケンス
- 8. ユニークなクラスごとに異なる配列を使用する同じ関数
- 9. 長さ28のユニークな文字列から長さ28のユニークな文字列を生成する方法は?
- 10. ランダムでユニークな配列の文字列
- 11. ユニークな名前(1列目、2列目)
- 12. SQL - ユニークな列5のランダムな数字
- 13. パンダデータフレームにユニークな列を追加
- 14. MongoDBでユニークな配列を作成
- 15. 配列とユニークなキーを使用したPHPの操作
- 16. Linqを使用してデータベーステーブル内のユニークな文字列のリスト?
- 17. qrandを使用してユニークな乱数列()とqsrand()
- 18. ビューをユニークな視聴者とユニークなビデオで取得する
- 19. asp cを使用してリピータコントロールのユニークな列のみを表示する#
- 20. 使用ユニークなエントリ識別
- 21. ユニークな線をフィルターする
- 22. 列グループ内の異なる列に異なる書式を適用する
- 23. 行列の異なる列に異なる関数を適用する
- 24. 別の列(グループ内)に異なる機能を適用しながら、列のサブセット(.SDcols)に関数を適用
- 25. MySQL InnoDBを使用したJPAのTEXT列に対するユニークな制約
- 26. スプレッドシートのすべての列でユニークな値を検索する
- 27. すべてのユニークなペア順列を生成する
- 28. ユニークな列を重複する行に移す
- 29. 適切なjavaのデータ構造ファイルからユニークな単語を見つける
- 30. ユニークな整数からのユニークな英数字の文字列ですか? (ゲームサーバーのIDをマスキングする)
ああありがとう、これは私がやっていることです、これは私が何をすべきだと思うかを確認します。 –
私にとっては、あなたは不必要な作業をしているようです。このチェックでは、選択クエリと挿入クエリの間に同じ値が挿入されていないことを確認することはできません。あなたの値が一意であるかどうかを判断するためにSQLExceptionを処理してください。 –