我正在編寫使用HSQLDB的集成測試,而在生產中應用程序使用Oracle數據庫。在Oracle上,我有一個觸發器,如果某個特定表的主鍵爲空,則使用序列中的下一個值填充它。我需要這個觸發器在HSQLDB中工作,但我似乎可以找到一種方法來使腳本適用於兩個DB;下面是由Oracle SQL開發Studio生成的觸發:與Oracle和HSQLDB兼容的數據庫觸發器
CREATE OR REPLACE TRIGGER "WFMEXTENSIONS"."WORK_TRG"
BEFORE INSERT ON WORK
FOR EACH ROW
BEGIN
<<COLUMN_SEQUENCES>>
BEGIN
IF INSERTING AND :NEW.WORK_ID IS NULL THEN
SELECT WORK_SEQ.NEXTVAL INTO :NEW.WORK_ID FROM SYS.DUAL;
END IF;
END COLUMN_SEQUENCES;
END;
/
HSQL DB在「Oracle兼容性模式」下使用
SET DATABASE SQL SYNTAX ORA TRUE;
任何想法觸發如何進行修改,以在兩個工作正在運行DB的?
爲什麼不你在兩個數據庫管理系統中使用一個標識列,並完全擺脫觸發器? –
在oracle中,標識列是在v12中添加的,而我正在使用v11(並且它不在我的控制範圍內進行升級) –
然後使用HSQLDB中的標識列並忘記觸發器。 「行爲」將是相同的 –