缺少等号和SQL语句忽略了Oracle触发器?

时间:2014-10-07 03:41:23

标签: oracle triggers syntax-error

这是我正在编写的触发器,并且它一直说我在第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;
 /

1 个答案:

答案 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