首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标识符'NEW.CITY_POPULATION‘必须声明

标识符'NEW.CITY_POPULATION‘必须声明
EN

Stack Overflow用户
提问于 2021-05-15 01:23:06
回答 1查看 185关注 0票数 0

我正在尝试声明一个oracle触发器,当城市人口达到0时,它将更新城市名称,但是我得到了这个错误。

代码语言:javascript
复制
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 

论城市

对于每一行开始

代码语言:javascript
复制
IF NEW.city_population = 0 THEN
代码语言:javascript
复制
    UPDATE Cities 
代码语言:javascript
复制
    SET city_name = 'Ghost town' 
代码语言:javascript
复制
    WHERE city_id = NEW.city_id;
代码语言:javascript
复制
END IF;

END tr_Town_Death;`

代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-15 01:41:23

  1. 如果要在触发器体中引用:new伪记录,则需要以冒号作为前缀。
  2. cities上的触发器通常不能查询cities表。在本例中,您似乎希望修改触发器要触发的行中的数据,因此您只想更新导致触发器触发的行的pseudo-record.
  3. Since (您想要修改该行),您将希望它是一个before update触发器。

当我们做出这些改变的时候,你最终会得到这样的结果

代码语言:javascript
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67542518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档