Ich versuche, einen Trigger für meine Datenbank zu erstellen und ich bekomme einen Fehler und ich vermute, dass es wegen meiner in-Klausel ist, aber ich bekomme den Grund nicht. Ich las in der Dokumentation davon (https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/selectinto_statement.htm), und es sagt:Oracle - Fehler in Zeile 4: PL/SQL: SQL-Anweisung
standardmäßig eine SELECT INTO-Anweisung nur eine Zeile zurückgeben muss. Andernfalls löst PL/SQL die vordefinierte Ausnahme TOO_MANY_ROWS und die Werte der Variablen in der INTO-Klausel sind nicht definiert. Stellen Sie sicher, dass Ihr WHERE-Klausel spezifisch genug ist, um nur
Nun ja, eine Zeile zu passen, zumindest versuche ich sicher zu sein, dass mein where-Klausel einen zurückkehrt und nur eine Zeile. Können Sie mir einen Rat geben?
CREATE OR REPLACE TRIGGER t_ticket
INSTEAD OF INSERT ON V_buyTicket FOR EACH ROW
declare ticketID number; busy number; seatRoom number;
BEGIN
select count(a.id_ticket) into busy , s.freeSeats into seatRoom
from assigned a
inner join show e on (a.id_movie= e.id_movie)
inner join rooms s on (e.id_room = s.id_room)
where a.id_session = 1 AND a.id_movie = 1
group by s.freeSeats;
if(busy < seatRoom) then
ticketID := seq_ticket.NEXTVAL;
insert into tickets(id_ticket, type, number, cc, store) values(ticketID, :new.type, :new.number, :new.cc, :new.store);
insert into assigned (id_ticket, id_movie, id_session) values(ticketID, :new.id_movie, :new.id_session);
else
DBMS_OUTPUT.PUT_LINE('No available seats');
end if;
END;
Ich muss eine Überprüfung mit ihm in einem Trigger machen, also muss ich den Wert in diese Variablen speichern ... und das ist mein Fehler. Aber ich frage mich, wie ich es lösen kann ... – Blackout