問題タブ [check-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.

0 投票する
1 に答える
110 参照

sql - SQL 拡張チェック制約

複雑なチェック制約を持つことは可能ですか?

たとえば、各レコードに顧客タイプが割り当てられている顧客テーブルがあります。

したがって、同じタイプの顧客が複数いる可能性があります。

タイプごとに 1 人の顧客をそのタイプの「プライマリ」アカウントに設定したいのですが、タイプごとに 1 人の顧客しかプライマリにできません。

IsPrimary フィールドにチェック制約を追加して、同じタイプのすべての顧客をチェックして、プライマリとしてマークされた顧客がすでに存在するかどうかを確認することはできますか?

これは明らかに C# コードで実行できますが、これは追加のチェックとして行いたいと思います。

トリガーを使用することもできますが、すべてのエラーに対して同じ方法でエラーを処理できるように、制約に固執したいと考えています。

ありがとう

0 投票する
2 に答える
158 参照

sql - Oracle Constraints: ユニーク制約とチェック制約の混合

次の問題に直面しています。一意の制約とチェック制約を組み合わせて作成したいと思います。

おそらく、DB の責任よりもビジネス ロジックの方が重要ですが、それでもなおです。

次の構造のテーブルがあります。

デザイン自体は間違っているかもしれませんが、あくまで一例です。

この方法で制約を設定したいと思います。

つまり、期間が互いに交差しない限り、同じ CUST_ID と CONTRACT_TYPE を持つ 2 つの保険を持つことができます。

この種の問題の解決策はありますか?

ヒントをありがとう!

乾杯ムエラ

0 投票する
2 に答える
1662 参照

sql - テーブル チェック制約により無効なデータが許可される

以下のテスト スクリプトを使用してチェック制約を作成すると、制約に違反するデータが引き続きテーブルに挿入され、制約が信頼済みとして表示されます。

チェック制約が NULL を正しくチェックしていないことは認識していますが (column = null代わりに が含まれcolumn IS nullています)、チェック条件が false と評価されるため、SQL Server は 'ASDF'、'3'、または NULL 値を許可しないと予想されます。これらの値に対して。このチェック制約が次の値を許可している理由を誰かが説明できますか: NULL、「3」、「ASDF」?

制約条件を に変更すると(checkMe is null or checkMe = '1' or checkMe = '2')、期待どおりに機能します。

SQL Server のバージョン: Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)

テーブルにデータを挿入する

チェック付きの制約を追加して、既存のデータをチェックするようにします。NULL と '3' の両方がこのチェックに違反していると思いますが、何とか成功しています。

チェック制約が追加された後に無効なデータを挿入しようとしています...これは成功しますか?

テーブルに無効なデータが含まれていること、およびこの制約が信頼済みとしてマークされていること、つまり、テーブル内のすべてのデータが制約に対して検証されていることを示します

スクリプト出力:

出力スクリーンショット

0 投票する
1 に答える
233 参照

sql - SQL : 列チェック制約は他の列を参照できません。(別のテーブル)

私は2つのテーブルを持っています
T1(A,B):
create table T1( A char(2) NOT NULL primary key check(T1.A not in T2.B), B char(2) unique );

T2(C,B) どこ
create table T2( C number(2) primary key, B char(2) unique references T1 check(T1.B not in T1.A) );

ここで、T2.B参照T1.A.

私の質問は、 で許可される値が で許可される値と異なるようT1.Aに、にチェック制約を設定するにはどうすればよいかということです。T1.BT1.AT2.B

0 投票する
1 に答える
29 参照

sql-server - この SQL チェック制約にはどのような論理エラーがありますか?

昨夜、以下のチェック制約の何が問題なのかを突き止めようと何時間も費やしました。次のルールを適用したい:

  • すべての行が null である
  • または、Col1 が null ではなく、他の列の 1 つだけが null ではありません (col4 が設定されている場合は、true に設定する必要があります)。

Col1 のみを設定して行を挿入することはできますが、代わりにエラーをスローしたいと考えています。