我制作了一个简单的 DVD 商店数据库。DVD 表有一个“状态”列,可以是“FOR_RENT”、“FOR_SALE”、“RENTED”或“SOLD”。如果 DVD 表中的状态列未设置为“FOR_RENT”,我想编写一个触发器来阻止任何插入到我的 RENTALS 表中。
我看过的大部分文档通常都没有显示使用来自两个不同表的值的示例,所以我有点不知所措。
这是我认为迄今为止我最好的尝试:
CREATE OR REPLACE TRIGGER RENTAL_UNAVAILABLE
BEFORE INSERT ON RENTAL;
FOR EACH ROW
WHEN (DVD.STATUS != 'FOR_RENT')
DECLARE
dvd_rented EXCEPTION;
PRAGMA EXCEPTION_INIT( dvd_rented, -20001 );
BEGIN
RAISE dvd_rented;
EXCEPTION
WHEN dvd_rented THEN
RAISE_APPLICATION_ERROR(-20001,'DVD has been rented');
END;
/
我收到此错误:
ORA-00911: invalid character