Я создал триггер:
CREATE OR REPLACE FUNCTION public.delete_user()
RETURNS TRIGGER AS $func$
BEGIN
EXECUTE format('UPDATE public.user SET %I = %L WHERE state = %L',
"state", "active", "deleted");
END;
$func$ LANGUAGE plpgsql;
CREATE TRIGGER deleted_user
AFTER UPDATE ON public.user
FOR EACH ROW
WHEN (OLD.state IS DISTINCT FROM NEW.state)
EXECUTE PROCEDURE delete_user();
чем после запуска:
update public.user set state = 'active' where fullname = '1234'
Я получаю ошибку:
> ERROR: column "state" does not exist
> LINE 1: ...UPDATE public.user SET %I = %L WHERE state = %L', "state", "...
> ^
> QUERY: SELECT format('UPDATE public.user SET %I = %L WHERE state = %L', "state", "active", "deleted")
> CONTEXT: PL/pgSQL function delete_user() line 3 at EXECUTE SQL state: 42703
Вот как состояние определяется в пользовательской таблице:
state text COLLATE pg_catalog."default" NOT NULL DEFAULT 'active'::text,
Я новичок в Postgres, так что, думаю, это синтаксическая ошибка?