發現在其上的獨特的varchar主鍵Oracle:自動增量觸發器。
CREATE OR REPLACE TRIGGER "BI_PRIVILEGE"
before insert on "PRIVILEGE"
for each row
begin
if :NEW."PRIVILEGE-ID" is null then
select "PRIVILEGE_SEQ".nextval into :NEW."PRIVILEGE-ID" from dual;
end if;
end;
這是一個自動號碼發生器阻擋插入數據庫以下觸發器?我可以很容易地禁用它來解決我的問題,但是會不會出現主鍵的負面分歧?
我實際上一直在尋找代碼來設置主鍵的自動增量觸發器,如果這是它正在做的事情,可以使用它作爲模板。如果是這樣,它可能做得不對,因爲主鍵特別是PRIVILEGE_ID
而不是PRIVILEGE-ID
,並且在衝突等情況下不應該出現某種類型的application_error
?
你已經發現的問題,列名不正確。你爲什麼想禁用觸發器(這是一個自動增量)?你爲什麼不糾正錯誤的代碼? – Ben 2013-05-05 20:18:30
@Ben因爲在這種情況下,主鍵是唯一的字符串。我無法想象在這種情況下自動增量可能是完全有用的。 – Stumbler 2013-05-05 20:24:12
如果這個觸發器阻塞插入,那麼它肯定會被使用,所以禁用它可能不是最好的計劃。無論哪種方式,如果此觸發器可以阻止應用程序代碼,那麼值得考慮一下數據庫中是否存在任何事務問題。 – Ben 2013-05-05 22:37:11