Estoy usando postgresql y pgadmin y soy nuevo en esto. Tengo una tabla "Usuarios" que tiene las siguientes columnas (Username, Name, Email, Phone, Discount, Password, token, serial, created_on, updated_on, points, reference)
.
Yo estaba tratando de crear un trigger de la tabla, de modo que cada vez que un nuevo inserción se produce con un nombre de usuario existente en el campo de referencia, los puntos de nombre de usuario será incrementado en el 50. Así que hay dos operaciones de actualización de la tabla existente, la inserción de los nuevos valores.
Yo intenté crear un trigger función como esta:
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;
y un disparador como este:
create trigger referece_points
after insert
on "Users"
for each row
execute procedure points();
Pero cuando trato de insertar un nuevo valor en los "Usuarios" de la tabla, me sale el siguiente error:
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