問題タブ [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.
doctrine - Doctrineで挿入する前に、データベースにエンティティが既に存在するかどうかを確認してください
データベースに既に存在するエンティティを挿入するたびに、フィールドの 1 つに一意の制約があるため、エラーが発生します ( email
)。
したがって、既に存在するかどうかを確認したいと思います。そうでない場合は、挿入します。
私のコードは次のようになります。
これを行う簡単な方法はありますか?
oracle - エラーが発生した場合にPL/SQLで行番号、プロシージャ名を見つける方法
D2k 6i フォームを使用していて、格納されたデータベース (oracle9i) プロシージャ ORA-00001:Unique constraint(.) 違反からフォームにエラーが発生しましたが、どのプロシージャから来たのかを追跡できません。誰でもこれに関して私を助けることができますか
sql-server - SQL Server: 「ほぼ一意」のインデックス
テーブルでは、5 列のキーに一意の値のみが存在するようにしたいと考えています。
しかし、 EventActionが次の場合にのみ、一意の制約を行間に適用したいINSERT
:
可能?
ruby-on-rails - アレイで作業しようとすると、なぜアクティブレコードエラーが発生するのですか?
ユーザーモデルには次の関連付けがあります。
user_usersテーブルに次の一意性制約があります。
私のコードでは、ユーザーの友達を取得しています-> friends=user.friends。友達は配列です。
それらすべての友達を持つユーザーを友達配列に追加したいというシナリオがあります。元:
ただし、次のエラーが発生します。
何が得られますか?
java - JPA 2.0 での制約違反の検出
たとえば、EclipseLink 2.0.2で使用される次のエンティティ・クラスを検討してください。ここで、link
属性は主キーではありませんが、それでも一意です。
属性の値が重複しているレコードを挿入するとlink
、EclipseLink は をスローせずに をスローしEntityExistsException
、DatabaseException
一意の制約に違反したことを説明するメッセージが表示されます。
この例外をキャッチする単純でデータベースに依存しない方法がないため、これはあまり役に立ちません。これに対処するための推奨される方法は何でしょうか?
私が検討したいくつかのことは次のとおりです。
- のエラー コードを確認しています
DatabaseException
- ただし、このエラー コードはデータベースのネイティブ エラー コードではないかと思います。 Profile
事前に特定の値を持つa の存在を確認するlink
- これは明らかに膨大な量の余分なクエリをもたらします。
mysql - JPAで作成されていない一意の制約
次のエンティティ Bean を作成し、2 つの列を一意として指定しました。今私の問題は、一意の制約なしでテーブルが作成され、ログにエラーがないことです。誰にもアイデアはありますか?
database - 10列を超える一意の制約
10個を超える入力変数を持つ時系列シミュレーションモデルがあります。個別のシミュレーションインスタンスの数は100万を超え、各シミュレーションインスタンスは毎日いくつかの出力行を生成します。
シミュレーション結果をリレーショナルデータベースに保存するために、私はこのようなテーブルを設計しました。
テーブルSimulationModelを作成します(
simul_id整数主キー、
input0文字列/数値、
input1文字列/数値、
...)
テーブルSimulationOutputを作成します(
dt DateTime主キー、
simul_id整数主キー、
output0数値、
...)
各モデルをユニークにするために、以下のような方法を検討しています。
SimulationModelテーブルのすべての入力列に一意性制約を設定します
SimulationModelテーブルを再設計して、入力列を2〜3列にグループ化し、これらのグループ化された列に一意の制約を設定します。(「input0_input1_input2」のような長い文字列値を作成することによって)
サーバー側の制約を忘れて、アプリケーション側で仕事をしてください。
これらのオプションについてどう思いますか?
数百万行の10列以上で一意のインデックスを使用しても問題はありませんか?
他に推奨する方法はありますか?
(私はpostgresqlを使用するかもしれません)
java - EntityExistsExceptionを適切に処理する方法は?
QuestionとFavoritesCounterの2つのエンティティがあります。質問が初めてお気に入りに追加されるときに、FavoritesCounterを作成する必要があります。
2人のユーザーがお気に入りに質問を同時に追加しようとするユースケースを考えてみましょう。これにより、2番目のユーザーが呼び出されたEntityExistsException
ときに発生します。entityManager.persist(counter)
ただし、以下のコードは機能しません。これは、EntityExistsException
がスローされると、コンテナがトランザクションをロールバックとしてのみマークし、戻りの試行getFavoritesCounter(question)
が失敗するためです。javax.resource.ResourceException: Transaction is not active
質問
FavoriteCounter
作成済みのエンティティを後で返すための最良の方法は何EntityExistsException
ですか?
java - Java の @UniqueConstraint アノテーション
Java Bean があります。ここで、フィールドが一意であることを確認したいと思います。
次のコードを使用しています。
しかし、私はいくつかのエラーが発生しています:
一意の制約を使用する適切な方法は何ですか?
注:私はプレイ フレームワークを使用しています。
.net - AutoIncrement 列を指定した DataTable.Rows.Add の ConstraintException
MySQL サーバー側と ADO.NET スキーマ側 (XML スキーマ ファイルからロード) の両方で AutoIncrement が有効になっている ID 列を持ついくつかの DataTables があります。行を挿入するときにこれらの ID を気にする必要がないようにしたいと思います。それらの唯一の用途はテーブルの主キーを持つことだからです。外部キーの参照はありません。ただし、新しい行が追加される場合、DataTable には既に行が含まれています。つまり、ID が 1 から始まる行が DataTable に既に存在します。
ID 列の既定の AutoIncrementSeed 値は -1 で、AutoIncrementStep 値は 1 です (Visual Studio によって提供される既定値のままです)。dataTable.NewRow() で作成すると、ID -1 と 0 が取得されるため、一度に 2 つの新しい行を挿入するだけであれば、すべて問題ないようです。しかし、3 番目の行を追加する場合は、ID を取得します。 NewRow() によって 1 が割り当てられます。その後、ID = 1 の行が既に存在するため、dataTable.Rows.Add(...) を使用して新しい行を挿入しようとすると ConstraintException がスローされます。
ADO.NETスキーマのAutoIncrementのものを無効にすることは解決策ではないと思います.Rows.Add()で行を追加する前に、IDが一意であることを確認する必要があるためです。
この問題の簡単でエレガントな解決策は何ですか? 今のところ、これが非常に珍しい作業だとは想像できません。
ありがとうございました!