ДОБАВИТЬ ограничение на ИЗМЕНЕНИЕ ОШИБКИ ДОМЕНА

Когда я выполняю:

ALTER DOMAIN public.remainingamount
    ADD CONSTRAINT "chk_remainingAmount" CHECK (remainingAmount > 0);

Я получил следующее сообщение в pgAdmin 4:

ОШИБКА: столбец «оставшаяся сумма» не существует. Состояние SQL: 42703.

Колонка существует. Я вижу это на боковой панели! В качестве доказательства, когда я выполняю следующую строку:

ALTER DOMAIN public.remainingamount
    ADD CONSTRAINT "chk_remainingAmount" CHECK (remainingAmount > 0);

Я получаю сообщение:

ОШИБКА: тип «оставшаяся сумма» уже существует. Состояние SQL: 42710.

Как добавить новое ограничение в существующий домен?


person Ask_Overflow    schedule 04.12.2017    source источник
comment
Скорее всего, вы забыли двойные кавычки вокруг remainingAmount. Если это не проблема, покажите определение домена (и исправьте вопрос, потому что маловероятно, что вы получите разные сообщения об ошибках для одного и того же оператора).   -  person Laurenz Albe    schedule 04.12.2017


Ответы (1)


Единственная переменная, которую вы можете использовать в CHECK ограничении DOMAIN, это VALUE. Предполагая, что базовый тип money:

ALTER DOMAIN public.remainingamount
    ADD CONSTRAINT "chk_remainingAmount" CHECK (VALUE > 0::money);
    

Согласно документации:

ПРОВЕРКА (выражение)

(...)

В настоящее время выражения CHECK не могут содержать подзапросы и ссылаться на другие переменные, кроме VALUE.

person klin    schedule 04.12.2017
comment
ОШИБКА: оператор не существует: деньги › целое число ПОДСКАЗКА: Ни один оператор не соответствует данному имени и типу(ам) аргумента. Возможно, вам потребуется добавить явное приведение типов. Состояние SQL: 42883 - person Ask_Overflow; 04.12.2017
comment
В сообщении об ошибке ясно сказано, что вам следует делать... См. обновленный ответ. - person klin; 04.12.2017