標籤:
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_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 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);
更健壯.
問題:oracle觸發器無效且未通過重新驗證;結果:觸發器裡面沒有加分號(;)