簡體   English   中英

Oracle SQL - 可以在檢查約束中使用CASE來確定數據屬性嗎?

[英]Oracle SQL - can CASE be used in a check constraint to determine data attributes?

我正在使用Oracle 10g,我想將約束應用於一個表,其中為一列輸入的值確定另一列是IS NULL還是IS NOT NULL。 Column1只能包含1或0; Column2是VARCHAR2(255)。

我知道以下工作:

CONSTRAINT ck_1 CHECK ((col1=1 AND col2 IS NOT NULL) OR (col1=0 AND col2 IS NULL));

但是,我想知道是否可以使用CASE來執行此約束並在col2上設置屬性NOT NULL,或者CASE是否只能用於定義值? 即可能像這樣的工作:

CONSTRAINT ck_1 CHECK (CASE WHEN col1=1 THEN col2 IS NOT NULL ELSE col2 IS NULL END);

由於CASE表達式必須返回一個值,並且檢查約束是布爾值,因此您必須將結果與某些內容進行比較,例如:

CONSTRAINT ck_1 CHECK (CASE WHEN col2 IS NOT NULL THEN 1 ELSE 0 END = col1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM