問題タブ [check-constraints]
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-server - JPAを使用してXOR制約を定義することは可能ですか?
JPA を使用してエンティティに XOR 制約を定義する必要があります。つまり、列 A または列 B のいずれかに値を持つことができるが、両方 (ただし、少なくとも 1 つ) には値を持てないことを指定する制約です。次のように MsSQL データベースでこれを手動で行うことは可能のようですが、理想的には、JPA アノテーションを使用してエンティティでこれを定義することをお勧めします。
これは可能ですか?
sql-server - チェック制約のない SQL Server の ENUM?
MySQL 変換プロセスで、SQL Server の ENUM データ型の代替を見つけようとしています。チェック制約が存在することは知っていますが、列挙型オブジェクトを完全に置き換えるために新しいテーブルを作成するだけです。したがって、目標の要点は次のとおりです。
C# では、必要に応じてこれらの値を簡単に呼び出すことができます。これを行う方法はありますか?または、小切手を使用する必要がありますか?
sql - どのSQLデータベースがCHECK制約のサブクエリをサポートしていますか?
CHECK制約のサブクエリをサポートしているSQLデータベースはありますか?
現在、そして私が知る限り、Oracle、MySQL、およびPostgreSQLはそうではありません。
編集
(最初の回答に基づく明確化。)私は次のようなものを探しています:
アップデート
MSAccessとFirebirdはどちらもこの機能をサポートしています。
sql-server - SQL Serverで正規表現チェック制約が可能ですか
LIKE
正規表現 CHECK 制約を使用して列のデータを検証する方法を見つけようとしていますが、これまでのところ、正規表現構文のサブセットが非常に限られているキーワードにしか遭遇していません。チェック制約で正規表現を使用する方法があるかどうか知りたいですか?
SQL Server 2005 および 2008 を使用しています。
nhibernate - AbstractTransactionalSpringContextTests (ロールバック) を使用すると、制約チェック エラーがキャッチされないテスト
私の統合テストの大部分はAbstractTransactionalSpringContextTests
、データベースにコミットする代わりに、スプリングを使用してロールバックを行います。これは正常に機能しますが、コミット段階まで外部キー制約が適用されないため、テスト戦略に穴があります。
どうすればテストを改善できますか?
テストの実行に時間がかかるため、可能であればコミットを避けたい (多数ある場合)
postgresql - 子テーブルの CHECK CONSTRAINTS がプランナーによってプランのサイズを縮小するために使用されないのはなぜですか?
月ごとに分割され、Apache ログ情報を保持するために使用されるテーブルがあります。パーティション CHECK と同じフィールドに WHERE 句を持つ単純なクエリに対して EXPLAIN を実行すると、constraint_exclusion がオンでもオフでも同じプランが得られます。以下は、2010 年の 2 月と 3 月のマスター テーブル情報と 2 つの子テーブル情報の例です。全体として、2010 年 2 月から 2011 年 6 月までの各月の子テーブルがあります。平均して、各子テーブルには約 1 億のレコードがあります。また、以下は単純なクエリの EXPLAIN の出力です。1 回は constraint_exclusion をオンにし、もう 1 回はオフにします。残念ながら、計画のサイズを縮小するために CHECK 制約が使用されていません。これは、request_dt データ型が TIMESTAMP WITH TIME ZONE であるのに、CHECK 制約が DATES であるという事実によるものですか? 他の考えはありますか?request_dt にはまだインデックスを作成していませんが、ドキュメントによると必要ありません。それらを追加しますが、CHECK 制約の使用に影響を与えるべきではないと思います。
Postgres 8.3.6 を使用しています。
sql - T-SQL:チェック制約が機能しない
次のT-SQLスキーマがあります。私が抱えている問題は、Download
テーブルのチェック制約が機能していないことです。とNULL
の両方の値を含むレコードをそのテーブルに挿入することはできます。なんでそうなの?ProductId
CategoryId
と列の両方で値を許可しProductId
たいのですが、特定のレコードでは、これらの1つだけをに設定でき、もう1つはまたはテーブルの対応するIDである必要があります。CategoryId
NULL
NULL
Category
Product
sql - 条件が満たされたときに特定の値が変更されるのを防ぐために、SQL 制約を使用できますか?
SQL 制約により、データが妥当性基準を満たすように強制される可能性があることを私は知っています。しかし、「学生の成績は、'finalized' フラグが false の場合にのみ更新できます」などの基準はどうでしょうか。このような更新基準は、アプリケーションで処理する必要がありますか?
sql - 定義された値を持つ一意の制約
次のサンプルテーブル構造を前提として、(GUID、'Y')の組み合わせの一意性を保証するために一意性制約に追加する方法はありますか?
アプリケーションロジック-更新により、同じであるが新しいguid
新しいバージョンが生成されます。前は非アクティブになります('Y'->'N')guid
luid
GUID-外部
IDLUID-内部ID
sql - ちょうど 1 つの値が null でないことを確認する CHECK CONSTRAINT を記述するより適切な方法
整数列 Col1、Col2、Col3、Col4 を持つテーブルがあるとします。各列は NULL 可能であり、有効な行には正確に 1 列の値が含まれている必要があります (つまり、すべての NULL は無効であり、複数の列も無効です)。
現時点では、このようなチェック制約があります
それは機能しますが、同じ結果を達成するためのよりエレガントな方法があるかもしれないと思います(たとえば、この質問者は少なくとも1つのフィールドがnullではないことを確認したいと考えてCOALESCE
おり、その場合はキーワードがうまく機能します).