我有一個表叫Room
,它有列(ID,型號,價格...等)檢查約束列之間值檢查
我要添加約束雙方type
和price
這樣的:
- 如果單個(或多個),那麼價格不應該大於50,
- 如果雙(d),則價格不應該大於100,和
- 如果家族(f)中,然後價格應該不會更大比150
我試圖像這樣添加它,但它給我一個錯誤。不知道我應該怎麼寫這樣的:
ALTER TABLE ROOM
ADD (CONSTRAINT CHK_PRICE CHECK (
(TYPE='S' AND PRICE <= 50) AND
(TYPE='D' AND PRICE <=100) AND
(TYPE='F' AND PRICE <= 150)));
收到的錯誤是:
SQL Error: ORA-02293: cannot validate (xxxx.CHK_PRICE) - check
constraint violated
02293. 00000 - "cannot validate (%s.%s) - check constraint violated"
*Cause: an alter table operation tried to validate a check constraint to
populated table that had nocomplying values.
*Action: Obvious
nop ....所有價格都低於他們的要求值 – user1672735
@ user1672735 - 你怎麼知道的?該錯誤清楚地表明'*原因:一個alter table操作試圖驗證一個檢查約束,以填充表中有不合適的值。 – Annjawn