1
column x (Not NULL)          | column z 
1............................| P
0............................| T

私はチェック制約を取得しました:列 x in (1, 0)、したがって、列は値 1 と 0 のみを受け入れますが、
これは本当に奇妙です (プロシージャやトリガーは必要ありません)。列が持つz値によって列の nullable を変更する制約のような方法が必要ですx

例:

  • xの値が 1 の場合、列はznull 許容にする必要があります。
  • xの値が 0 の場合、列はzデフォルト N で非 null にする必要があります

なぜ私はそれが欲しいのですか?私はオラクルとsybaseを使用しています.sybaseの問題は、nullかどうかを指定せずに列を追加すると、自動的にnullではなくなります(テストvarchar(12)を追加<--これはデフォルトでsybaseでNullになり、 oracle 、その列で、syabse か oracle かを指定したい)

たぶん手順はもっと良いでしょうが、私の問題に対する別の方法がないか探しています.

4

1 に答える 1

2

整合性のチェック制約から始めます。

ALTER TABLE <table> ADD CONSTRAINT chk_x_z CHECK (X = 1 OR Z IS NOT NULL)

これにより、ビジネス ルールが常に適用されます。

カスタムを実装するには、プロシージャまたはトリガーが必要ですdefault N

于 2013-06-19T07:38:58.350 に答える