/sql/Trigger/set_printer_id.sql

http://cupsfilter.googlecode.com/ · SQL · 49 lines · 16 code · 6 blank · 27 comment · 1 complexity · fd09b267b9bfaf79797c39a6bb08dc29 MD5 · raw file

  1. --CREATE PROCEDURAL LANGUAGE plpgsql;
  2. CREATE FUNCTION set_printer_id() RETURNS "trigger"
  3. AS $$
  4. DECLARE
  5. pr_id INTEGER;
  6. begin
  7. pr_id :=(select printers.id from printers where printers.printer_name=NEW.cups_printer_name);
  8. if (pr_id IS NULL)THEN
  9. -- ? ???? ???? ??? ?????? ????????, ?? ??? ??? ?? ??????? ???? ???? ????????, ?? ??????? ? ??????? ????????? ? ?????? ID
  10. INSERT INTO printers (printer_name,descr) values (NEW.cups_printer_name,'??????? ??? ???????? ?? ????? ????????? CUPS');
  11. pr_id :=(select printers.id from printers where printers.printer_name=NEW.cups_printer_name);
  12. END IF;
  13. UPDATE reports SET printer_id=pr_id where id=NEW.id;
  14. return new;
  15. end;
  16. $$ LANGUAGE plpgsql;
  17. CREATE TRIGGER tr_set_printer_id AFTER INSERT
  18. ON reports FOR EACH ROW EXECUTE PROCEDURE set_printer_id();
  19. /*
  20. CREATE FUNCTION del_product() RETURNS "trigger"
  21. AS $$
  22. begin
  23. update vendor set products=products-1 where id=old.vendor_id;
  24. return old;
  25. end;
  26. $$ LANGUAGE plpgsql;
  27. CREATE TRIGGER tr_del_product AFTER DELETE
  28. ON product FOR EACH ROW EXECUTE PROCEDURE del_product();
  29. CREATE FUNCTION upd_product() RETURNS "trigger"
  30. AS $$
  31. begin
  32. if old.vendor_id<>new.vendor_id then
  33. update vendor set products=products+1 where id=new.vendor_id;
  34. update vendor set products=products-1 where id=old.vendor_id;
  35. end if;
  36. return new
  37. end;
  38. $$ LANGUAGE plpgsql;
  39. CREATE TRIGGER tr_upd_product AFTER UPDATE
  40. ON product FOR EACH ROW EXECUTE PROCEDURE upd_product();
  41. */