У меня есть таблица со столбцами: c1, c2, c3, c4 И я пытаюсь добавить проверку CONSTRAINT условия являются:Postgresql проверочное ограничение условно
- если c4 не равно нулю, то c1, c2, c3 все не должны быть нулевыми.
- else, если c4 имеет значение null, тогда c1, c2, c3 являются необязательными, но по крайней мере одно поле должно быть не нулевым.
Вот моя команда SQL:
ADD CONSTRAINT quatereulchk CHECK(
(c1 IS NOT NULL AND c2 IS NOT NULL AND c3 IS NOT NULL AND c4 IS NOT NULL)
OR
(c4 IS NULL AND c1 IS NOT NULL OR c2 IS NOT NULL OR c3 IS NOT NULL)
);
я тестировал с pg_admin однако Constrain не работает. Благодаря!
Подсказка: проверьте приоритет 'AND' и' OR'. Если бы мы говорили о математике, ваш DDL ожидает, что '2 * 2 + 2' равен' 8' – zerkms
Я вижу, в моем случае это означает, что И выше OR? Спасибо за подсказку! – Lester
Да (и не только в этом случае, но и везде) – zerkms