Я определил домен, унаследованный от составного типа, который имеет ограничение CHECK, чтобы одно из значений его компонента никогда не было нулевым.Я хочу написать функцию языка plpgsql, которая имеет переменную этого типа.Я не могу объявить такую переменную.
Вот упрощенный пример сценария, который выдает мне то же сообщение об ошибке:
CREATE DOMAIN myint AS integer
CONSTRAINT not_null CHECK (VALUE IS NOT NULL);
CREATE FUNCTION myfunc() RETURNS myint LANGUAGE plpgsql AS $$
DECLARE
notnullint myint;
BEGIN
notnullint := 1;
RETURN notnullint;
END
$$;
mydb=# select myfunc();
ERROR: value for domain myint violates check constraint "not_null"
CONTEXT: PL/pgSQL function myfunc() line 4 during statement
block local variable initialization
Я смущен, думая, что невозможно связатьпеременная plpgsql для значения типа домена, который имеет ненулевое ограничение?Мне трудно поверить, что PostgreSQL будет иметь такое ограничение.
Примечание: в моем реальном приложении я хочу присвоить переменной возвращаемое значение оператора INSERT, поэтому назначение значения в блоке DECLARE кажется неуместным.