PL/SQL sql 更新视图的触发器

PL/SQL sql trigger for updating a view

我有 player_value 视图,其中包含来自玩家 table 的玩家 ID、玩家姓名和玩家姓氏。 如果我修改视图中的信息,我必须创建一个触发器来更新播放器 table。

当我想要创建触发器时收到一些警告。你能帮帮我吗?

DROP VIEW player_value;

CREATE OR REPLACE VIEW player_value AS
SELECT p.ID,p.name,p.sname,p.value
FROM player p;




DROP TRIGGER up_value;
CREATE OR REPLACE TRIGGER up_value
INSTEAD OF UPDATE
ON player_value
BEGIN 

        update player
        set value=:new.value
        where ID=:new.ID;
    end if;
end;
/

您有一个额外的 END IF 声明。另外,您还缺少 FOR EACH ROW。我的猜测是那里曾经有一个 IF UPDATE 语句,例如:

CREATE OR REPLACE TRIGGER up_value
INSTEAD OF UPDATE ON player_value FOR EACH ROW
BEGIN 
    IF (UPDATING AND :new.value <> :old.value) THEN
        UPDATE player
           SET value = :new.value
         WHERE ID = :new.ID;
    END IF;
END;
/

但这可以更容易地完成,如下所示:

CREATE OR REPLACE TRIGGER up_value
INSTEAD OF UPDATE OF value ON player_value FOR EACH ROW
BEGIN
    UPDATE player
       SET value = :new.value
     WHERE ID = :new.ID;
END;
/

希望对您有所帮助。