Я хотел бы сделать копию строки в одной таблице, адресованной поле в другой таблице, например:как обойти отсутствует тип записи на вставке
CREATE OR REPLACE FUNCTION f_ins_up_vorb()
RETURNS TRIGGER AS $$
DECLARE
dienst dienst%ROWTYPE;
account record;
BEGIN
-- ...
EXECUTE format('SELECT * FROM %s WHERE id=$1',dienst.tabelle)
USING NEW.id INTO account;
EXECUTE 'INSERT INTO ' || dienst.tabelle || 'shadow SELECT ($1).*, now(), $2' USING account, jobid;
RETURN NEW;
END
$$ LANGUAGE plpgsql;
Но это дает:
ERROR: record type has not been registered
CONTEXT: SQL statement "INSERT INTO accountadshadow SELECT ($1).*, now(), $2"
PL/pgSQL function f_ins_up_vorb() line 30 at EXECUTE statement
таблицы решаемых dienst.tabelle
не имеет общий типа, но целевую таблица (dienst.tabelle || 'shadow')
всегда надмножество исходной таблицы. Таким образом, это всегда должно работать (и делает работы в функции запуска, где я использую NEW
, который, похоже, имеет тип записи).
Есть ли способ обойти это?