使用JDeveloper开发WEB应用时同时使用Oracle的sequence和trigger

案例:
当用户使用JDveloper进行WEB应用的时,有可能涉及到用户新建一跳记录,但该记录的ID对应数据库中的ID主键,如果我们使用的是mysql数据库的话,mysql数据库中有一种数据类型,可以当用户插入数据时,如果ID对应得值为null时,,mysql数据库会自动生成一个值,并维持该值的唯一性;但如果我们用的是oracle数据库怎么办呢??有人可能会想到用oracle的sequence和trigger,对!!在oracle数据库中,如果只是想通过oracle数据库本的功能生来维持主键字段的唯一性,那么sequence和trigger是两种不同的出来方式。

然而我们在用JDeveloper进行web开发时,我们还想实现上述功能,怎么办???
答:我们只有同时使用oracle数据库提供的sequence和trigger(我个人的理解,如果有不同的看法请通知我)。

具体实现方法如下:

说明:
假设该实验中操作的表是TEST_SEQ(ID VARCHAR2(20),NAME VARCHAR2(20)); 在该表上建立的基于insert的触发器脚本如下:
create or replace trigger test_seq_trig
before insert on SEQ_TAB FOR EACH ROW
declare
begin
select TEST_SEQ.NEXTVAL into :NEW.ID from dual;--在插入一条记录前修改该记录的ID,通过sequence生成的,并且保持唯一。
end test_producter_trig;
/


1.创建EO对象(此处假设对象名称为SeqEO),主要的设置步骤是在SeqEO.xml文件的左边选择“Attributes”,然后选中对应数据库中主键的属性行(此处假设该属性是ID,即:ID属性对应的字段在数据库中是主键)。
2.点击右上方的“笔形”按钮,进入“Edit Attribute :Id”对话框,然后在右边的“Type”下拉框中选择“DBSequence”,然后再该对话框下边的“Sequence”导航中输入“Sequence Name:”对应的sequence名称,该sequence必须存在于数据库中,然后在“Start at:”框中输入该对应sequence的开始值。
3。点击本页面中的“Apply”按钮后,点击“OK”键,即可。

4.然后创建该EO对应的VO(SeqVO.xml),并把该VO加入AM中,进行debug即可。


附件是具体的操作图和触发器sql脚本。

方法二:
覆写EO的create方法!

你可能感兴趣的:(oracle,sql,Web,mysql,脚本)