oracle索引中丢失in或out参数,oracle 11g给表建触发器错误“索引中丢失 IN 或 OUT 参数:: 1...
Oracle中沒有已定義好的自動編號列,需要自己創建,下面總結Oracle 10g中自動編號列的創建方法:
1. 首先需要給要添加自動編號列的表創建索引,被索引的列就是后面要實現的自動編號列,這樣的列往往是名為“ID”的列。創建索引可以通過OEM創建,也可以 在SQL*Plus或PL/SQL中通過SQL語句創建。以方案LY中的表HARD為例,給其hard_id列創建索引的SQL語句為:
CREATE UNIQUE INDEX LY.HARD ON LY.HARD(hard_id);
2. 然后需要創建一個最小值為1,最大值不限,遞增值為1的序列。序列的創建同樣可以通過OEM或直接輸入SQL語句創建。創建序列的SQL語句為:
drop sequence HARD_SEQ;
create sequence HARD_SEQ
minvalue 1
maxvalue 999999999999999999999999999
start with 21
increment by 1
cache 20
order;
3.最后為表LY.HARD創建觸發器,以實現在每次插入行時,hard_id列自動遞增編號。觸發器的創建同樣可以方便的由OEM創建,也可以用SQL語句創建。下面為創建觸發器的SQL語句:
CREATE OR REPLACE TRIGGER "HARD_ID_TRIGGER" BEFORE
INSERT ON "LY"."HARD" FOR EACH ROW
declare
next_checkup_no number;
begin
select hard_seq.nextval
into next_checkup_no
from dual;
:NEW.hard_id := next_checkup_no;
end;
需要注意的是,在用OEM創建觸發器時,有可能出現“Failed to commit: 索引中丟失 IN 或 OUT 參數:: 1”的錯誤提示,在網上查閱了一些資料,認為這可能是Oracle中的一個BUG,所以建議使用SQL語句創建觸發器。
總結
以上是生活随笔為你收集整理的oracle索引中丢失in或out参数,oracle 11g给表建触发器错误“索引中丢失 IN 或 OUT 参数:: 1...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle join详解,inner
- 下一篇: oracle index content