zoukankan      html  css  js  c++  java
  • 问题:oracle触发器无效且未通过重新验证;结果:触发器里面没有加分号(;)

    oracle无效且未通过重新验证

    代码如下:

    SQL code如下:
    --创建中国地图表
    create table  china_address
    (
           id number not null primary key,
           address_name varchar2(30) not null,
           parent_address_id number ,
           foreign key(parent_address_id) references china_address(id)
    );              
     
    --创建中国地图序列
    create sequence china_address_sequ
    minvalue 1
    maxvalue 10000
    start with 1
    increment by 1
    nocycle
    cache 5;
     
    --创建中国地图主键自增长触发器
    create trigger china_address_increase_tr before
    insert on china_address for each row
    begin
      select china_address_sequ.nextval into:new.id from dual
    end china_address_increase_tr;
     

    修改如下:

       

    CREATE OR REPLACE TRIGGER CHINA_ADDRESS_INCREASE_TR BEFORE
    INSERT ON CHINA_ADDRESS FOR EACH ROW
    BEGIN
      SELECT CHINA_ADDRESS_SEQU.NEXTVAL INTO:NEW.ID FROM DUAL;
    END CHINA_ADDRESS_INCREASE_TR;
     
    主要是你从网上COPY的代码里面
    SELECT CHINA_ADDRESS_SEQU.NEXTVAL INTO:NEW.ID FROM DUAL
    后面少了个符号";"
    PL/SQL认为语句后面带有一个;才作为一个语句的结束

    此外,不建议使用触发器做这个事情,不如使用
    INSERT INTO china_address VALUES(CHINA_ADDRESS_SEQU.NEXTVAL,'sd',1);
    更健壮.
  • 相关阅读:
    P2280 [HNOI2003]激光炸弹[前缀和]
    P1280 尼克的任务[区间覆盖dp]
    P1352 没有上司的舞会[树形dp]
    HDU1024 Max Sum Plus Plus[DP]
    P1282 多米诺骨牌[可行性01背包]
    P1063 能量项链[区间DP]
    P1880 [NOI1995]石子合并[环形DP]
    P1091 合唱队形[单调性+DP]
    Gym 100971D 单调栈
    Gym 100971A Treasure Island BFS 思维题
  • 原文地址:https://www.cnblogs.com/longphui/p/4741418.html
Copyright © 2011-2022 走看看