問題タブ [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.
python - Django:モデル内からunique_togetherを検証するにはどうすればよいですか
私は次のものを持っています:
次に、同じアカウントの別のユーザー名と同じユーザー名で新しい AccountAdmin を作成すると、テンプレートに表示するエラーが表示される代わりに、IntegrityError で壊れてページが停止します。私の見解では、私はただ行くことができればいいのにと思います:
どうすればこの問題を克服できますか。is_valid()
部品の違反についてDBをチェックする2番目のタイプの方法はありunique_together = (('Account', 'is_master'), ('Account', 'username'),)
ますか?
ビューで IntegrityError をキャッチする必要はありません。これは、ドメイン ロジックとプレゼンテーション ロジックを組み合わせたものです。同じフォームを 2 ページに表示すると、同じブロックを繰り返さなければならないため、DRY に違反します。また、DRY にも違反しています。同じものに対して 2 つの形式がある場合は、同じ except: をもう一度書かなければならないからです。
entity-framework - ADO.NET エンティティに制約を追加するにはどうすればよいですか?
フィールドのグループを ADO.NET エンティティの主キーとしてマークする方法は知っていますが、一意の制約を宣言したり、制約をチェックしたりする方法が見つかりません。
この機能はデザイナーまたはフレームワークにありませんか?
sql-server - SQL Server 2008 で主キーとして末尾にスペースがある Varchar
「a」や「a」などの値を持つ主キーとして varchar 列を持つことは可能ですか? MS SQL Server 2008 では常にこのエラー「主キー制約違反」が発生します。Oracle ではエラーは発生しません。ところで、私はこの方法を実装していません.OracleからSQLサーバーにデータを移行しようとしているだけです.
よろしく
mysql - MySQL: ユーザーの「ビュー」のテーブル構造
反対のアドバイスがあった質問があります。追加の意見をいただければ幸いです。
私のサイトには user_id を持つユーザーがいます。これらのユーザーは製品を表示できます。私は、特定の製品を表示しているユーザーの一意のインスタンスを追跡する必要があります。別のビュー テーブルにビューを記録するには、現在 2 つのオプションがあります。
オプション1:
view_id (INT,PK) | user_id (INT,FK) | product_id (INT,FK) | ビュー日付
...そして、ON DUPLICATE KEYで簡単に更新できるように、中央の2つの列に一意の制約を作成します。同じビューが既に存在する場合は、view_date を更新するだけです。そうでない場合は、新しい行を書き込みます。
オプション 2:
ユーザー製品 (VARCHAR20,PK) | ビュー日付
... 2 つの ID を VARCHAR にマージし、途中でセパレーターを使用し、主キー列を使用して、上記と同じ方法で ON DUPLICATE KEY で簡単に更新します。
構造は約まで収容する必要があります。100 万回のユニーク ビュー。どちらのオプションが良いか悪いかについて何か考えがありますか? またその理由は? よろしくお願いします。
編集: 回答ありがとうございます。コンセンサスがあるようです。同じ側に傾いていましたが、安心が必要でした。
hibernate - Hibernate - all-delete-orphan でコレクションをクリアしてからコレクションに追加すると、ConstraintViolationException が発生する
私はこれらのエンティティを持っています
このマッピングでは(申し訳ありませんが、注釈はありません。私は時代遅れです):
また、2 つの列に一意の制約があります: local_identifier
and parent_id
(それぞれに一意の制約はありませんが、両方を含む単一の一意の制約です。たとえば、同じ親と同じ localIdentifier を持つ 2 つの行は許可されません)
そして、それらを使用するこのコード:
さて、何らかの理由で、Hibernate は呼び出された順序で物事を実行しません。clear()
(挿入)の前に(削除)を実行しませんが、add()
逆の場合は、最初に挿入を試みて、ConstraintViolationException
少しsession.flush()
後bars.clear();
に を追加すると、これを修正できることはわかっていますが、この場合、醜い方法でセッションにアクセスすることはできません。
それで、フラッシュが唯一の解決策ですか?または、アクションの順序を尊重する Hibernate バージョンはありますか?
更新: ところで、コレクションを逆参照すると、https://www.hibernate.org/117.html#A3から HibernateException が発生します。
I get HibernateException: Don't dereference a collection with cascade="all-delete-orphan"これは、オブジェクトを cascade="all-delete-orphan" コレクションでロードしてから、コレクションへの参照を削除すると発生します。このコレクションを置き換えないでください。孤立削除アルゴリズムが変更を検出できるように、clear() を使用してください。
oracle10g - COMMIT 時に ORA-00001 (一意の制約違反) を取得していますか?
バッチ ジョブで ORA-00001 (一意の制約違反) が発生しています。ただし、問題のあるレコードが挿入されたときではなく、COMMIT が発行されたときにエラーが発生します。
質問:
- COMMIT でユニーク制約がチェックされるのはなぜですか? (INSERT 時にチェックが行われるように使用できる設定はありますか?)
- 一意の制約違反につながる問題のある SQL/レコードを見つけるにはどうすればよいでしょうか?
どんな助けでも大歓迎です!
追加情報/質問:
「問題のある」制約は、IMMEDIATE および NON-DEFERRABLE としてマークされます。これはトランザクションでオーバーライドできますか?
sql-server - フィールドにテキストを追加して一意にする
SQL Server 2000 を使用しています。あるテーブルから別のテーブルにデータをコピーしている状況があります。コピー先のデータ テーブルでは、各名前行が一意である必要があります。これが私の問題の簡単な例です
私がやりたいことは、これにそれを回すことです
Name 列は varchar(40) です。どのように行うかについてのアイデアはありません。重複する行が 2561 行あるため、手動で行うことはできません。
どこから始めるべきかについてのアイデアはありますか?
java - 要素の一意性を保証するキュー?
キューのように動作するが、キューの各要素が一意であることを確認するjava.util.QueueまたはGoogleコレクション内の何かの実装を探しています。(それ以上挿入しても効果はありません)
それは可能ですか、それとも私は手でそれをしなければなりませんか?
今のところ、LinkedList実装のキューを使用しており、挿入する前に一意性を確認します。(これを行うためにサイドマップを使用します。キューの前後にサイドマップから要素を追加/削除します)。あまり好きではありません。
どんな入力でも大歓迎です。java.utilパッケージに含まれていない場合は、それは悪い考えですか?
sql - Oracle DB からゴースト制約を見つける
テーブルに制約がありました
2 週間前に、テーブルを変更し、いくつかの列を追加し、制約 "PK_USERSAPPLICATIONS" を削除し、代理キーを追加しました。Oracle SQL Developer で、制約 PK_USERSAPPLICATIONS がもう存在しないことがわかります。
それにもかかわらず、同じ userid/applicationName の組み合わせで 2 つのエントリを追加しようとすると、エラーが発生します
ステートメントを実行すると
私はゼロ行を取得します。それはどうしてですか?制約 PK_USERSAPPLICATIONS はすでに数週間前に削除されているため、Oracle はこの制約について何の知識も持っていないはずです。また、データベースでも確認できません。
java - 休止状態の列の一意性に関する質問
私はまだ hibernate/hql を学習中ですが、半分はベスト プラクティスの質問、半分はサニティ チェックという質問があります。
クラスAがあるとしましょう:
保存される A のすべてのインスタンスに一意の名前 (したがって @Column アノテーション) を付けるように強制したいのですが、その名前を持つ A インスタンスが既に保存されている場合も処理できるようにしたいと考えています。これを行うには2つの方法があります。
1) session.saveOrUpdate() 呼び出し中にスローされる可能性のある org.hibernate.exception.ConstraintViolationException をキャッチして、処理を試みることができます。
2) session.saveOrUpdate() を呼び出す前に、DAO で既にその名前を持つ A の既存のインスタンスを照会できます。
アプローチ1では、違反した制約をプログラムで把握する方法がわからないため、現在、アプローチ2に傾いています(Aには他にもいくつかの一意のメンバーがあります)。現在、私の DAO.save() コードはおおよそ次のようになっています。
私はこれを正しい方法で行っていますか?hibernate は、一意性制約に違反している値をプログラムで (つまり、エラー文字列としてではなく) 教えてくれますか? クエリをコミットから分離することで、スレッド セーフ エラーを招きますか?それとも安全でしょうか? これは通常どのように行われますか?
ありがとう!