SQL добавить ограничение, если enum тогда column не обнуляется - PullRequest
0 голосов
/ 20 января 2020

При наличии схемы

CREATE TYPE offer AS ENUM ('DISCOUNT', 'COUPON');

CREATE TABLE voucher (
...
offerType offer NOT NULL,
couponCode text
)

Есть ли способ добавить ограничение к ваучеру, что если тип предложения COUPON, то couponCode не обнуляется, а если тип предложения DISCOUNT, то couponCode должен иметь значение null?

1 Ответ

1 голос
/ 20 января 2020
check ((offerType = 'COUPON' and couponCode is not null) or
       (offerType = 'DISCOUNT' and couponCode is null) or
       (offerType not in ( 'COUPON', 'DISCOUNT'))
      ) 

Часть (offerType not in ( 'COUPON', 'DISCOUNT')) необходима для других типов предложений, вставленных позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...