【发布时间】:2011-05-05 15:44:11
【问题描述】:
目前我正在为应用程序设置测试环境。我在我的测试环境中使用 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 驱动程序创建一个触发器。
干杯!
凯文
【问题讨论】:
标签: java sql oracle triggers ora-00900