G.....i
G.....i
#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?
  • Najlepsze
  • Wszystkie komentarze
japer
@Ghostli: sql i funkcje to rak. ;_;
razvizion
WHERE sprzet.ID = NEW.ID_sprzetu;
razvizion
@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.
chamstwo_w_spreju
@Ghostli: hehe miałem identyczne zadanie na podstawach baz danych, ale nie pamiętam jak działało :p.
plushy
@Ghostli: Wrzuć na sqlfiddle.com to się zobaczy.
G.....i
G.....i
@plushy: Schema Creation Failed:

ERROR: unterminated dollar-quoted string at or near "$BODY$


?? kod przeklejony prosto z ide
j.....1
j.....1
@Ghostli: a gdybyś skasował te podwójne " w tym insercie całkiem. To co wyrzuca?
G.....i
G.....i
@razvizion: Dzięki, zadziałało.
G.....i
G.....i
@razvizion: Dzięki, zapamiętam. W sensie zadziałało na ten błąd, ale teraz dostaję

BŁĄD: kolumna sprzet.id nie istnieje


Edit: Źle napisałem. W sensie nie widzi kolumny z innej tabeli.
razvizion
@Ghostli: daj samo id bez sprzet

WHERE WHERE ID = NEW.ID_sprzetu;
plushy
@Ghostli: Dla postgresa nie musisz definicji funkcji wrzucać do schema, wtedy możesz się podzielić nawet z błędami.
G.....i
G.....i
@razvizion: Dałem. > BŁĄD: kolumna "id" nie istnieje
G.....i
G.....i
@plushy: Mógłbyś napisać, co dokładnie mogę usunąć z ciała funkcji a co musi zostać?
G.....i
G.....i
@razvizion: @plushy: Dobra dzięki za pomoc panowie, akurat muszę spadać, a nie jest to ważne także nie macie co się głowić ;/