![](/img/trans.png)
[英]Laravel: Error Code : 933 Error Message : ORA-00933: SQL command not properly ended Position
[英]Simple Trigger Error?! PL/SQL: ORA-00933:
我正在嘗試創建一個觸發器,它將值插入到審核表中以供管理員用戶批准。 觸發器會將添加到顧問表中的新值插入到此審計表中。
我已經多次重新觸發觸發器,但似乎無法繞過編譯錯誤! 我認為這是小事?
DROP TABLE MyAuditTable;
CREATE TABLE MyAuditTable (
audit_id INTEGER NOT NULL,
new_name VARCHAR2 (30),
new_postcode VARCHAR2 (20),
status VARCHAR2 (15),
CONSTRAINT pk_MyAuditTable PRIMARY KEY ( audit_id )
);
DROP sequence MySeq;
Create sequence MySeq MINVALUE 1 MAXVALUE 9999999 INCREMENT BY 1 START WITH 1;
drop trigger MyTrigger;
create trigger MyTrigger
after insert on my_consultant_table
for each row
begin
insert into MyAuditTable values (
MySeq.nextval, :new.con_name,
:new.con_postcode,
'Pending'
)
from my_consultant_table;
end;
/
錯誤:PL/SQL:ORA-00933:
所以審計表現在應該有來自顧問表的新輸入數據,其中包含姓名和郵政編碼屬性。 另一個觸發器將觸發,以便在狀態更改時允許這些更改。
謝謝你!
線
from my_consultant_table
是不必要的。
應該:
insert into MyAuditTable values (MySeq.nextval, :new.con_name, :new.con_postcode, 'Pending');
此 ORA-00933 表示觸發器聲明中存在語法錯誤:
begin
insert into MyAuditTable values (
MySeq.nextval, :new.con_name,
:new.con_postcode,
'Pending'
)
from my_consultant_table;
end;
from my_consultant_table
的尾隨沒有意義,只需將其刪除即可:
begin
insert into MyAuditTable values (
MySeq.nextval, :new.con_name,
:new.con_postcode,
'Pending'
);
end;
嘗試這個:
begin
insert into MyAuditTable
select
MySeq.nextval,
:new.con_name,
:new.con_postcode,
'Pending'
from dual;
end;
一個提示:當你創建一個序列時,總是使用從 1 到 9999999.... 一一遞增。 只需使用
create sequence owner.table nocache;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.