oracle,主键自增长,从序列取值,用触发器好or用java直接写个方法好?

2019-08-21 10:09发布

问题:

oracle,主键自增长,从序列取值,用触发器好or用java直接写个方法好?

回答1:

还是用触发器吧,类似下面这样:
create or replace
TRIGGER "GEW"."TRI_AUTHORITY"
BEFORE INSERT ON GEW_AUTHORITY
FOR EACH ROW
BEGIN
SELECT SEQ_AUTHORITY.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
----------------------------
SEQ_AUTHORITY是序列;
最终选择触发器而非Java写个方法,是从性能和易维护性两个角度进行比较得出的结论:
1、性能更高,肯定的,不解释;
2、易维护性上讲,
有些人总是一刀切地认为数据库的机制,
肯定没有伟大的面向对象语言Java来得更易维护;
但是,
我认为这是,
人云亦云的说法,
死脑筋的想法,
不知变通的做法;
深入进去看,
触发器,主体逻辑就一句SQL语句——从序列取个值,
这难维护个毛啊~~~~~~~~~
so,易维护性同样没有下降;



回答2:

直接写个方法,触发器移植性不好,一般不用。现在一般就是在mybatis的xml中用sql跑序列做id



回答3:

这个mybaits增加
<insert id="insert">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
select seq.nextval from dual
</selectKey>
insert into t_user values(#{id},#{name},#{age},#{salary})
</insert>