Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

how to avoid ora-06512

421070May 11 2004 — edited May 12 2004
here is my table script:
CREATE TABLE room( room_id NUMBER(2), room_type_id VARCHAR2(3) NOT NULL,
Status VARCHAR2(1) NOT NULL);
ALTER TABLE room ADD CONSTRAINT pk_room PRIMARY KEY(room_id);
ALTER TABLE room ADD CONSTRAINT CHECK_room_status CHECK (status IN ('A','B','U'));

CREATE TABLE Booking (Booking_id VARCHAR2(6) NOT NULL,
Room_id NUMBER(2) NOT NULL);
ALTER TABLE booking ADD CONSTRAINT pk_booking_id PRIMARY KEY(booking_id);
ALTER TABLE booking ADD CONSTRAINT fk_booking_room_id FOREIGN KEY(room_id) references room(room_id);

my trigger is to avoid double booking of the room:
CREATE OR REPLACE TRIGGER DT1_before_booking
BEFORE INSERT ON BOOKING
FOR EACH ROW
DECLARE
dummy VARCHAR2(1);
BEGIN
SELECT status INTO dummy FROM room WHERE room_id = :NEW.room_id;
IF dummy = 'B' THEN
RAISE_APPLICATION_ERROR(-20000,'Room '||:NEW.room_id||' is already booked');
END IF;
END;
TRIGGER CREATED SUCCESSFULLY
but
insert into booking values('000001',4)
ERROR at line 1:
ORA-20000: Room 4 is already booked
ORA-06512: at "SCOTT.DT1_BEFORE_BOOKING", line 8
ORA-04088: error during execution of trigger 'SCOTT.DT1_BEFORE_BOOKING'

can anyone help me to avoid this error ORA-06512
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 9 2004
Added on May 11 2004
1 comment
381 views