Eu sunt, folosind postgresql și pgadmin și eu sunt nou la acest lucru. Am un tabel "Utilizatori" care are următoarele coloane (Username, Name, Email, Phone, Discount, Password, token, serial, created_on, updated_on, points, reference)
.
Am fost încercarea de a crea un trigger pentru masă, astfel încât de fiecare dată când un nou introduce apare cu numele de utilizator existente în domeniul de referință, punctele de utilizat de utilizator va fi incrementat cu 50. Deci, există două operațiuni - actualizarea masă existente, introducerea de noi valori.
Am încercat crearea unui declanșator funcție de genul asta:
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;
și un declanșator de genul asta:
create trigger referece_points
after insert
on "Users"
for each row
execute procedure points();
Dar când m-am încercați să introduceți un nou valori în "Utilizatori" de masă, primesc următoarea eroare:
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