webForumDet fria alternativet

Triggers i Oracle 9

4 svar · 184 visningar · startad av pimme

pimmeMedlem sedan sep. 20011 086 inlägg
#1

Hej, läser för tillfället en kurs i databasteknik.
Triggers är inget som vi har gått igenom än och jag tror inte vi kommer göra det heller, men jag ville leka lite med det ändå.
Det står inget ordentligt exempel på Trigger vid INSERT i boken utan bara vid UPDATE, men vad jag förstår ska det se ungefär likadant ut.
Den här koden testar jag (har testat lite olika modifieringar på den med) men den fungerar inte.

CREATE TRIGGER ReservationTrigger
BEFORE INSERT ON Reservation
REFERENCING
        NEW ROW AS newRow

        UPDATE Shows
        SET availableSeats = availableSeats - 1
        WHERE Shows.showId = newRow.showId;

Det som händer är ingenting. Den verkar vänta på en fortsättning på mitt CREATE TRIGGER kommando och jag är tvungen att trycka ctrl+c för att avbryta.
Nån som vet vad som är fel?

LarsGMedlem sedan dec. 200012 464 inlägg
#2
CREATE TRIGGER ReservationTrigger
BEFORE INSERT ON Reservation
for each row
UPDATE Shows
        SET availableSeats = availableSeats - 1
        WHERE Shows.showId = :new.showId;
pimmeMedlem sedan sep. 20011 086 inlägg
#3

Tyvärr, det verkar inte fungera heller. :(

SQL*Plus skrev:

SQL> CREATE TRIGGER ReservationTrigger
2 BEFORE INSERT ON Reservation
3 for each row
4 UPDATE Shows
5 SET availableSeats = availableSeats - 1
6 WHERE Shows.showId = :new.showId;
7
8

Här kan jag sen trycka på enter hur många gånger jag vill, det händer inget mer.

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Det verkar mer vara något problem med verktyg du använder. Har för mig att det finns något där man avslutar kommandon med /

pimmeMedlem sedan sep. 20011 086 inlägg
#5

Ahh, tackar. Nu fungerade det.
Eller, var tvungen att lägga till begin och end också :)

CREATE TRIGGER ReservationTrigger
BEFORE INSERT ON Reservations
for each row
BEGIN
UPDATE Shows
        SET availableSeats = availableSeats - 1
        WHERE Shows.showId = :new.showId;
END;
/
133 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)