Sql 标识符';纽约市人口';必须申报

Sql 标识符';纽约市人口';必须申报,sql,oracle,triggers,Sql,Oracle,Triggers,我试图声明一个oracle触发器,该触发器将在城市人口达到0时更新城市名称,但我遇到了此错误 LINE/COL ERROR --------- ------------------------------------------------------------- 3/5 PL/SQL: Statement ignored 3/11 PLS-00201: identifier 'NEW.CITY_POPULATION' must be declared Errors:

我试图声明一个oracle触发器,该触发器将在城市人口达到0时更新城市名称,但我遇到了此错误


LINE/COL  ERROR
--------- -------------------------------------------------------------
3/5       PL/SQL: Statement ignored
3/11      PLS-00201: identifier 'NEW.CITY_POPULATION' must be declared
Errors: check compiler log```

here is my code

```CREATE TRIGGER tr_Town_Death AFTER UPDATE 
ON Cities
FOR EACH ROW BEGIN

    IF NEW.city_population = 0 THEN
        UPDATE Cities 
        SET city_name = 'Ghost town' 
        WHERE city_id = NEW.city_id;
    END IF;
END tr_Town_Death;```
  • 如果要引用触发器正文中的
    :new
    伪记录,则需要在其前面加一个冒号
  • cities
    上的触发器通常无法查询
    cities
    表。在这种情况下,您似乎希望修改触发器触发的行中的数据,以便只更新
    :new
    伪记录
  • 由于您希望修改导致触发触发器的行,因此您希望它在更新之前是一个
    触发器
  • 当我们做出这些改变时,你会得到这样的结果

    CREATE TRIGGER tr_Town_Death 
      BEFORE UPDATE 
      ON Cities
      FOR EACH ROW 
    BEGIN
        IF :NEW.city_population = 0 
        THEN
            :new.city_name := 'Ghost town';
        END IF;
    END tr_Town_Death;