問題タブ [unique-constraint]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - SQL でテーブルに「条件付き一意」制約を設定できますか?
私はこれまでのキャリアの中で何度かこの問題に直面してきましたが、地元の同業者の誰もそれに答えられないようです。ユーザーがプロセスの途中で停止する場合があることを除いて、候補キーである「説明」フィールドを持つテーブルがあるとします。したがって、おそらく 25% のレコードでこの値は null ですが、NULL 以外のすべてのレコードでは一意である必要があります。
もう 1 つの例は、レコードの複数の「バージョン」を維持する必要があるテーブルであり、ビット値はどれが「アクティブな」バージョンであるかを示します。そのため、「候補キー」は常に読み込まれますが、同一のバージョン (アクティブ ビットが 0) が 3 つ存在し、アクティブなバージョン (アクティブ ビットが 1) が 1 つだけ存在する場合があります。
これらの問題を解決する別の方法があります (最初のケースでは、ストアド プロシージャまたはビジネス レイヤーのいずれかでルール コードを適用し、2 番目のケースでは、アーカイブ テーブルにトリガーを入力し、履歴が必要なときにテーブルを UNION します)。 . 代替手段は必要ありません (明らかにより良い解決策がない限り)。SQL のいずれかのフレーバーがこの方法で「条件付きの一意性」を表現できるかどうか疑問に思っています。私はMS SQLを使用しているので、その中でそれを行う方法があれば、素晴らしい. 私は主に問題に学術的に興味があります。
sql - PostgreSQLでnull以外の一意の制約を使用して列を更新する特殊なケース
これは、PostgreSQLの実際の問題を説明するおもちゃの例です。以下の例ではPostgreSQL8.4.3サーバーを使用していますが、他のバージョンでも同じ問題が発生していると思われます。
次の表があるとします。
テーブルを次のように変更できますか?
行を削除したり、テーブルスキーマを変更したりせずに?これ:
動作しません。
削除が許可されている場合、これは次のとおりです。
動作します。これはこの例の最も単純な解決策ではありませんが、より複雑な例に簡単に一般化できます。
sql-server - 一意性制約と一意性インデックス
SQLServerで一意性を強制するために開発者がどの手法を使用することを好むかを知りたいです。UNIQUECONSTRAINTまたはUNIQUEINDEXです。それぞれの物理的な実装にほとんど違いがないことを考えると、どちらが最適かをどのように判断しますか?
パフォーマンス以外に、最良のソリューションを評価する理由はありますか?
どちらか一方にデータベース管理の利点はありますか?
database - 方法: オブジェクトの保存時に一意のインデックスが失敗したときにカスタム エラー メッセージを表示する
フィールドのセットが一緒になって複合一意キーを形成するようにするためだけに、テーブルにインデックスを追加しました (このアプローチは正しいですか? または、Doctrine でより良いオプションがありますか?)
それを行った後、オブジェクトを保存しようとして一意制約が失敗すると、SQL 例外が生成されます。これを処理する最善の方法は何ですか? カスタムエラーメッセージを表示するには?
私の宿題
MySQL からの例外コードを確認して処理します。しかし、そのような制約が複数ある場合、正確な制約を特定することはできません。
スキーマに postValidator を追加し、そこにロジックを記述します
3番目の/より良い方法はありますか?
ありがとう
java - JPA一意制約でトランザクションが失われましたか?
一意の制約を持つフィールドがあります:
2 つのエンティティを同じ値で保存しようとすると、例外が発生しますが、予期したものとは別の例外が発生します。
問題のあるフィルタ メソッドは次のようになります。
...そして ThreadLocalEntityManager は次のようになります:
save
一意の制約違反を処理するために の呼び出しをラップしましたtry ...catch
が、うまくいきません:
トランザクションがない理由は何か分かりますか? 一意の制約違反を処理する正しい方法は何ですか?
sql - SQL: 2 つのフィールドに基づいて重複を見つける方法は?
2つのフィールドの組み合わせに対して一意である必要があるOracleデータベーステーブルに行がありますが、テーブルに一意の制約が設定されていないため、SQLを使用して自分で制約に違反するすべての行を見つける必要があります. 残念ながら、私の貧弱な SQL スキルでは、このタスクをこなすことはできません。
私のテーブルには、entity_id、station_id、obs_year という関連する 3 つの列があります。各行について、station_id と obs_year の組み合わせは一意である必要があります。これに違反する行があるかどうかを、SQL クエリでフラッシュして確認したいと考えています。
次のSQLを試しました(この前の質問で提案されています)が、うまくいきません(ORA-00918列があいまいに定義されています):
誰かが私が間違っていること、および/またはこれを解決する方法を提案できますか?
hibernate - 注釈を使用して、列の組み合わせが一意の制約であることを指定する方法は?
テーブル内のすべての行に 2 つのフィールドの一意の組み合わせがあることを確認し、エンティティ クラスの注釈を使用してこれを指定したいと考えています。@Table と @UniqueConstraint の組み合わせを使用してみましたが、どうやら間違っているようです。個別の列が一意であることを指定することしかできないようです (@Column の一意のプロパティを使用して既に指定できます)。列の組み合わせよりも。たとえば、フィールド A と B を持つテーブルに、A と B の一意の組み合わせを持つ行のみを含める必要があります。どちらのフィールド/列も一意である必要はありません。一意であるべきは 2 つの組み合わせです。
これが私がこれまでに試したことです。
と
誰かがこれを行う正しい方法を提案できますか? また、Hibernate 固有のアノテーションの代わりに JPA アノテーションを使用できる場合は、それが望ましいでしょう。
よろしくお願いします。
--ジェームズ
java - 一意のキーのフィールド部分を更新中に Hibernate が一意の制約違反の例外をスローする
以下は使用例です。A、B、C の 3 つの列で定義された一意のインデックスがあります。それらの値が A1、B1、C1 であるとします。私のJavaコードはA1、B1、C1などの新しいレコードを追加していますが、このレコードが追加される前に、以前の値をC1からC2に更新します。(更新後に) 新しいレコードを追加しようとしているときに、休止状態が一意の制約違反の例外をスローしています。なぜそうするのかについて何か理由はありますか?上記のすべてのステートメントは、同じトランザクション内で実行されます。私の仮定は、挿入が更新の前に発生するため、例外の理由です。
考えや提案はありますか?
python - 複数のテーブルのデータを使用した一意の制約(SQL / SQLAlchemy)
と呼ばれるトップクラスParametric
は、パラメータを関連付けることができるオブジェクトを作成するために使用されます。
ORMエンジンにSQLAlchemyを使用しています。
組み合わせ( 、 )が特定のクラスに対して一意でUNIQUE
あることを保証する制約を課したいのですが(たとえば、の1つのインスタンスのみを呼び出して、値をとることができます)、から列を参照する方法がわかりません。テーブルセクションで。name
prop
Foo
"my_foo"
prop
"my_prop"
name
Parametric
Foo
UNIQUECONSTRAINT
FOREIGN KEY
この独自性は、ディレクティブを介して課すことができるものですか?
java - HibernateおよびNonUniqueObjectException
@ManyToOne関係を持つ他の2つのエンティティを含むエンティティがあります。
別のAレコードの「B_ID」と「C_ID」を持つAインスタンスを保存しようとすると、例外が発生します。
org.hibernate.NonUniqueObjectException:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられていました
例えば:
B_IDとC_IDは私のモデルでは一意ではなく、(B_ID + C_ID)は一意の制約ではありません!!
私に何ができる?
少し早いですがお礼を。