Wpis z mikrobloga

#programowanie #postgresql #sql #bazydanych

Hej, nigdy nie pisałem triggerów i nie wiem co tu nie gra.

CREATE OR REPLACE FUNCTION update_wypozyczenie()

RETURNS trigger AS

$BODY$

BEGIN

UPDATE sprzet

SET czy_wypozyczone=TRUE

WHERE NEW.ID_sprzetu = sprzet.ID;

RETURN NEW;

END;

$BODY$

LANGUAGE plpgsql VOLATILE

COST 100;

ALTER FUNCTION update_wypozyczenie()

OWNER TO postgres;

CREATE TRIGGER on_insert

BEFORE INSERT

ON wypozyczenie

FOR EACH ROW

EXECUTE PROCEDURE update_wypozyczenie();

INSERT INTO wypozyczenie(wypozyczone_od, wypozyczone_do, "ID_klienta",

"ID_sprzetu")

VALUES ('22 Sep 2014', '28 Sep 2015', 1, 15);

insert wyrzuca błąd: rekord new nie posiada pola id_sprzetu. wtf?
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Ghostli: Być może masz rozjazd w typach danych, między ID z sprzet a IDsprzetu z innej tabeli.

Najlepiej przed Begin deklarować zmienne we właściwym formacie, potem za Begin przypisywać je i używać już w Update.
  • Odpowiedz