我在我的Oracle數據庫中有一個students
表,它有一個名爲RECORD_NUMBER
的字段。這個字段的長度是8個字符,我想創建一個觸發器,在插入時使用0
s填充左側部分。這是我到目前爲止有:導致無限循環的Oracle觸發器
create or replace
TRIGGER STUDENTS_RECORD_NUMBER_TRG
BEFORE INSERT OR UPDATE OF RECORD_NUMBER ON TBL_STUDENTS
FOR EACH ROW
BEGIN
WHILE length(:new.RECORD_NUMBER) < 9
LOOP
:new.RECORD_NUMBER := LPAD(:new.RECORD_NUMBER,8,'0');
END LOOP;
NULL;
END;
然而,當我嘗試插入一行數據庫連接鎖起來,我必須重新啓動甲骨文再次使用它。這個觸發器可能導致無限循環嗎?
似乎不起作用,但是當插入一行時,它不會引發任何錯誤,觸發器無法填充記錄號。 –
@JamesDawson - 「record_number」列的數據類型是什麼?它是「VARCHAR2(8)」還是「NUMBER」? –