Как в SQL базе сделать так чтобы несколько столбцов могли иметь только разные значение в одной строке?

Есть PostgreSQL База нужно , чтобы столбец col_1 и col_2 могли иметь только разные значение, то есть нужно предотвратить тот сценарий где делается insert с равными друг другу значениями col_1 и col_2.

Есть ли решение этой задачи на уровне СУБД например вовремя создания таблицы и как лучше всего добиться этого условия ?


Ответы (1 шт):

Автор решения: Akina
CREATE TABLE ... ( -- создание таблицы
... ,              -- всякие прочие поля
col1 ... ,         -- поле col1
... ,              -- ещё всякие прочие поля
col2 ... ,         -- и теперь поле соl2
... ,              -- и снова всякие прочие поля и иные конструкции
           -- ну и добрались до проверки нужного условия
CONSTRAINT col1_neq_col2 CHECK (col1 != col2),
           -- теперь в таблице никаким штатным способом не может появиться запись, 
           -- значения полей которой не выполняют этого условия
... ,
);

Ну а если таблица уже имеется, то вносим в неё изменения b добавляем показанное ограничение соотв. ALTER TABLE. Предварительно проверив, что все существующие записи не нарушают его. А если такие записи есть - предварительно исправляем либо удаляем их.

→ Ссылка