这是我正在编写的触发器,并且它一直说我在第8行有一个缺少的等号,第7行的sql语句被忽略了?有什么理由发生这种情况吗?
CREATE OR REPLACE TRIGGER TRIGGER_ACTOR_STARRED
BEFORE INSERT ON film_actor FOR EACH ROW
DECLARE a_count NUMBBER(10);
BEGIN
SELECT COUNT(*) INTO a_count
FROM V_ACTORS_STARRED
WHERE :new.actor_id = actor_id;
IF a_count > 0 THEN
UPDATE film
SET rental_rate := rental_rate * 1.10
WHERE :new.actor_id = film_actor.actor_id
AND film.film_id = film_actor.film_id;
END IF;
END;
/
答案 0 :(得分:0)
您必须记住将SQL与PL / SQL区分开来。
在SQL UPDATE语句中,=
用于分配。 (示例update tab set cola = 10
)
在PL / SQL过程语句中,使用:=
进行分配。 (例如:i := 10;
)
下面的代码是嵌入式SQL,因此应使用=
,而不是:=
...
UPDATE film
SET rental_rate := rental_rate * 1.10
应该是
UPDATE film
SET rental_rate = rental_rate * 1.10