Конкретный val#
должен быть не более чем в одном столбце. Однако несколько столбцов могут быть empty
. (Я не хочу использовать NULL
вместо empty
.)
CREATE TYPE vals AS ENUM ('val1', 'val2', 'val3', 'val4', 'val5', ... 'empty');
CREATE TABLE some_table
( ...
column1 vals NOT NULL,
column2 vals NOT NULL,
column3 vals NOT NULL,
CONSTRAINT some_table_column_vals_check CHECK (???)
... );
Допустимые комбинации, например ::10000
column1: val1
column2: val2
column3: val4
column1: val1
column2: empty
column3: empty
Недопустимые комбинации, например ::
column1: val1
column2: val3
column3: val3
column1: val2
column2: empty
column3: val2
Есть ли удобный способ сделать это с (желательно не слишком длинным) ограничением, или я должен написать для этого триггерную функцию?