场景:
在执行保存方法时报错can not insert null to xxx.(ID)
分析:
这个错误表明时因为数据库id设置了主键唯一且不为空,而插入的时候为null所以报错,我的项目使用的oracle数据库,跟mysql数据库直接设置自增不一样,oracle需要先创建序列和触发器配合使用才能实现自增
解决:
1.建一个触发器sql:
CREATE OR REPLACE TRIGGER CLE_FUND_ADJU_APPLY_ID_TRIGGER(触发器名) beforeinsert on CLE_FUND_ADJU_APPLY(表名) for each rowbeginselect SEQ_CLE_FUND_ADJU_APPLY(序列名).nextval into:new.id(自增字段名) from dual(oracle中的虚拟表);end CLE_FUND_ADJU_APPLY_ID_TRIGGER(触发器名);
2.建一个sequencesql:
create sequence SEQ_CLE_FUND_ADJU_APPLY(序列名)minvalue(最小值) 1nomaxvalue(如果间隔值>0说明是递增序列可以不需要最大值就使用nomaxvalue代替maxvalue 9999999999,如果间隔值<0说明是递减序列可以不需要最小值就可以使用nominvalue)start with(起始值:默认为1) 1increment by(间隔数:每次加多少,如果省略,则默认为1) 1nocycle(一直累加,不会循环)nocache(不用缓存);