Я создаю триггер, который для таблицы билетов активируется, когда статус билета меняется с не оплаченного (3) на оплаченный (4).Я также должен распечатать сообщение о том, что билет A оплачен на B, где A - идентификатор билета, а B - дата платежа.
До сих пор я не смог успешно распечатать дату, когда билетоплачивается.
Мой прогресс на данный момент:
create or replace trigger change_ticket_status
after update on car_ticket
for each row when (new.status<> old.status)
begin
dbms_output.put_line('Ticket status is ' ||:new.status || ' (paid).' );
dbms_output.put_line('Ticket ID' || :new.tid || ' was paid on' || :new.paydate);
end;
тестирование:
update car_ticket
set status=2
where tid=4 and paydate= '2018-11-24';
таблица car_ticket:
(tid int, --- parking ticket id
cid int, --- the car that violated parking regulations
lid int, --- lot where violation took place
ttype int, -- ticket type
status int, --- 3 issued, 4 paid,
tdate date, --- ticket issue date
paydate date, --- date ticket is paid
note varchar(50), --- notes about the violation
primary key(tid),
foreign key(cid) references car,
foreign key (ttype) references ticket_type,
foreign key (lid) references lot
);
Результат:
Триггер создан
Результат для тестирования:
ORA-01861: литерал не соответствует строке формата
ORA-06512: в "SYS.DBMS_SQL",линия 1721
Ваша помощь очень ценится!