Eu estou usando o postgresql e o pgadmin e eu sou novo para isso. Eu tenho uma tabela "Usuários" que tem as seguintes colunas (Username, Name, Email, Phone, Discount, Password, token, serial, created_on, updated_on, points, reference)
.
Eu estava tentando criar um gatilho para a mesa, de modo que toda vez que uma nova inserção ocorre com um nome de usuário existente no campo de referência, os pontos do nome de usuário será incrementada em 50. Assim, existem duas operações - atualização da tabela existente, a inserção de novos valores.
Eu tentei criar uma função de gatilho, como este:
create or replace function points()
returns trigger as
$BODY$
BEGIN
if
new."Users"."reference" in (old."Users"."username")
then
Insert into "Users"(Username,Name,Email,Phone,Discount,Password,token,serial,created_on,updated_on,points,reference)
values(new.Username,new.Name,new.Email,new.Phone,new.Discount,new.Password,new.token,new.serial,new.created_on,new.updated_on,new.points,new.reference);
update "Users"
set old."Users"."points" = old."Users"."points" + 50
where "Users"."username" = (select "Users"."username" from "Users" where new."Users"."reference" in (old."Users"."username"));
end if;
RETURN new;
END;
$BODY$
language plpgsql;
e um gatilho, como este:
create trigger referece_points
after insert
on "Users"
for each row
execute procedure points();
Mas quando tento inserir uma nova valores de "Usuários" da tabela, recebo o seguinte erro:
ERROR: missing FROM-clause entry for table "Users" LINE 1: SELECT new."Users"."reference" in (old."Users"."username") ^ Query: SELECT new."Users"."reference" in (old."Users"."username") CONTEXT: PL/pgSQL function points() line 2 at IF