目前我为应用程序设置了一个测试环境。我在我的测试环境中使用 jUnit 和 Spring。在测试执行之前,我想设置一个数据库测试环境状态。我已经编写了 SQL 脚本(模式和数据),它们在 Oracle SQLDeveloper 中运行良好。当我尝试使用 oracle 瘦 jdbc 驱动程序执行它们时,执行失败。看起来瘦驱动程序不喜欢创建触发器语句。
我读到我必须使用 oci 驱动程序而不是瘦驱动程序。oci 驱动程序的问题在于它不是独立于平台的,而且设置它需要时间。
我的代码示例:
CREATE TABLE "USER"
(
USER_ID NUMBER(10) NOT NULL,
CREATOR_USER_FK NUMBER(10) NOT NULL,
...
PRIMARY KEY (USER_ID)
);
CREATE SEQUENCE SEQ_USER START WITH 1 INCREMENT BY 1;
CREATE TRIGGER "USER_ID_SEQ_INC" BEFORE
INSERT ON "USER" FOR EACH ROW BEGIN
SELECT SEQ_USER.nextval
INTO :new.USER_ID
FROM DUAL;
END;
如果我执行触发器语句,则执行失败,但我看起来查询的第一部分(CREATE TRIGGER "USER_ID_SEQ_INC" ... "USER" ... BEGIN ... FROM DUAL;)已成功执行,但是如果我尝试使用它,触发器似乎已损坏。执行失败错误来自语句 END 的第二部分;“ORA-00900:无效的 SQL 语句”。
有谁知道该问题的解决方案?我只想用独立于平台的瘦 jdbc 驱动程序创建一个触发器。
干杯!
凯文