问题:oracle触发器无效且未通过重新验证;结果:触发器里面没有加分号(;)
oracle无效且未通过重新验证
代码如下:
--创建中国地图表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_sequminvalue 1maxvalue 10000start with 1increment by 1nocyclecache 5;--创建中国地图主键自增长触发器create trigger china_address_increase_tr beforeinsert on china_address for each rowbegin select china_address_sequ.nextval into:new.id from dualend china_address_increase_tr; |
修改如下:
CREATE OR REPLACE TRIGGER CHINA_ADDRESS_INCREASE_TR BEFOREINSERT ON CHINA_ADDRESS FOR EACH ROWBEGIN 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);
更健壮.
SELECT CHINA_ADDRESS_SEQU.NEXTVAL INTO:NEW.ID FROM DUAL
后面少了个符号";"
PL/SQL认为语句后面带有一个;才作为一个语句的结束
此外,不建议使用触发器做这个事情,不如使用
INSERT INTO china_address VALUES(CHINA_ADDRESS_SEQU.NEXTVAL,'sd',1);
更健壮.

浙公网安备 33010602011771号