записи, для которых check constraint зарубил возможность вставки? не получается сделать ON conflict ON constraint ck_attribute_value_check DO NOTHING
А, не, перепутал. Ну, привести одно к другому.
Вообще, покажы \d -- будет понятнее. Но по идее -- всего-то (...fields...)::attribute_values
непонятно. функция должна принимать произвольный рекорд, но как только она вызывается в констрейнте, то получается привязка какая-то
Этого не можэт быть. Покажы \d и как ты это в SELECT пытаешься вызвать.
alter table attribute_values add constraint ck_attribute_value_check check (attribute_value_check(attribute_values) = true);
2249/16 argtypes/rettype. Всё вроде как надо.
прототип: create or replace function attribute_value_check(val record) returns boolean as $$
Кстати, собирать минимальный тэстовый запрос можно снизу начать. Просто эта табличка и WHERE твой attribute_value_check.
если закомментировать with ..., то селект ниже работает...
Баг, отражённый в документацыи, считается фичей: The mutable nature of record variables presents another problem in this connection. When fields of a record variable are used in expressions or statements, the data types of the fields must not change from one call of the function to the next, since each expression will be analyzed using the data type that is present when the expression is first reached. EXECUTE can be used to get around this problem when necessary. https://www.postgresql.org/docs/current/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING
оу... насколько плохо такое решение? https://sqlize.online/sql/psql15/29f285ddc7c3a66f7eb2d1dfcf9d801a/
Обсуждают сегодня