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);
    更健壮.
  • 相关阅读:
    数据结构 队列
    数据结构 堆栈
    UNP学习 广播
    UNP学习 路由套接口
    QTcpSocket发送结构体
    线性表及实现
    [转]理解WSRF之一 使用WS-ResourceProperties (整理自IBM网站)
    详解x86、IA-32、IA-64等CPU系列
    gsoap框架下的onvif程序流程分析
    【LeetCode】从contest-21开始。(一般是10个contest写一篇文章)
  • 原文地址:https://www.cnblogs.com/longphui/p/4741418.html
Copyright © 2011-2022 走看看