-
2021-02-22 14:11:40
1.建表
create table overseas_users( overseas_id varchar2(10) not null primary key, --主键 name varchar2(50), -- 名字 );
2.创建自增序列
create sequence seq_overseas_id minvalue 1 --最小值 maxvalue 9999999999 --最大值 start with 1 --起始值 increment by 1 --增长基数 nocycle --不循环 nocache ; -- 不使用缓存
3.调用
insert into overseas_users(overseas_id,name) values(seq_overseas_id.nextval,'xxx');
更多相关内容 -
Navicat Premium中Oracle创建主键自增的方法
2021-01-19 21:43:34到此这篇关于Navicat Premium中Oracle创建主键自增的方法的文章就介绍到这了,更多相关Navicat Premium主键自增内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网! -
oracle数据库主键自增并且返回主键值
2020-12-14 11:50:56一、创建序列 1.1、直接在PLSQL中设置 1.2、命令创建 create sequence seq_users ##创建序列seq_users increment by 1 ## 步长,每次加1 start with 1 ##从1开始 minvalue 1 ##最小值 maxvalue 9999999 ##最大值 ... -
oracle实现插入数据时主键自增
2021-05-02 08:03:34在看ORACLE_PL/SQL实例精解的时候用到了student表,需要自己创建。1 首先是建表语句create table student (student_id number(8) not null primary key, --主键列first_name varchar2(50), -- 名字last_name varchar...在看ORACLE_PL/SQL实例精解的时候用到了student表,需要自己创建。
1 首先是建表语句
create table student (
student_id number(8) not null primary key, --主键列
first_name varchar2(50), -- 名字
last_name varchar2(50) -- 姓
);
2 创建自增序列
create sequence seq_student
minvalue 1 --最小值
nomaxvalue --最大值
start with 1 --起始值
increment by 1 --增长基数
nocycle --不循环,一直增加
nocache ; -- 不使用缓存
到这里其实就可以使用了,只是在插入的时候必须要自己调用,像这样
insert into student(student_id,first_name,last_name) values(seq_student.nextval,'','');
为了可以不关注主键列,创建一个触发器。
3 创建触发器(插入数据时触发)
create trigger tri_student_ins
before insert on student for each row when (new.student_id is null)
begin
select seq_student.nextval into:new.student_id from dual;
end;
这样就可以插入数据了
insert into student(first_name,last_name) values('','');
4 写一个pl/sql代码块,批量插入数据
declare
i number := 1;
v_first_name varchar2(50);
v_last_name varchar2(50);
begin
for i in 1 .. 200
loop
v_first_name := '' || to_char(i);
v_last_name := '' || to_char(i);
insert into student(first_name,last_name) values(v_first_name,v_last_name);
commit;
end loop;
end;
-
<insert id="insertDataInfos" useGeneratedKeys="true"> <selectKey keyProperty="exid" resultType="int" order="BEFORE"...
-
mybatis + (oracle)实现主键自增 + 插入数据并返回主键
2021-01-28 10:27:08一、实现主键自增在oracle数据库中,主键并没有办法自动增长,无法使用insert对应的useGeneratedKeys和keyProperty属性自动返回增加的主键。一、使用selectKey标签select nvl(max(id),0)+1 fromap_loginloginsert ...一、实现主键自增
在oracle数据库中,主键并没有办法自动增长,无法使用insert对应的useGeneratedKeys和keyProperty属性自动返回增加的主键。
一、使用selectKey标签
select nvl(max(id),0)+1 fromap_loginloginsert into ap_loginlog(ID,MEMBER_ID) values(#{id},#{memberId})
keyProperty是指vo类中的主键属性名称,resultType是指vo类中的主键属性类型,order有两个属性,一个是AFTER是指限制性插入语句,一个是BEFORE是指先执行selectKey标签内的语句:select nvl(max(主键名),0)+1 from 表名
二、使用序列
首先创建序列
CREATE SEQUENCE loginlog_squence //序列名
INCREMENT BY1//每次增长多少
NOMAXVALUE //MAXVALUE:最大值;NOMAXVALUE:没有最大值
NOCYCLE //序列达到最大值后是否循环;CYCLE:循环;NOCYCLE:不循环
CACHE10; //CACHE/NOCACHE:是否需要缓存;缓存生成多少个序列值
查看创建的序列
然后再sql语句中插入
insert into ap_loginlog(ID,MEMBER_ID) values(loginlog_squence.nextval,#{memberId})
三、使用序列加触发器
create or replace trigger loginlog_trigger
before insert on ap_loginlogforeach row
beginselect loginlog_sequence.nextval into :new.id fromdual;
end loginlog_trigger;
然后再sql语句中插入
insert into ap_loginlog(MEMBER_ID) values(#{memberId})
以上就是实现主键自增,下面说一下插入数据并返回主键 ,我踩坑的原因是mapper层使用了@Param() 导致实体对象一直拿不到生成的主键
1、service层代码
@OverridepublicBoolean insert() {
TLampMateriel tLampMateriel= newTLampMateriel(); //实体对象,一般
tLampMateriel.setName("张三");int i = this.baseMapper.insertMateriel(tLampMateriel);
System.out.println(tLampMateriel.getId());return i > 0;
}
2、mapper层代码
packagecom.fsgis.one.map.lamp.mapper;importcom.baomidou.mybatisplus.extension.plugins.pagination.Page;importcom.fsgis.common.base.mapper.BaseMapper;importcom.fsgis.one.map.lamp.model.entity.TLampMateriel;importcom.fsgis.one.map.lamp.model.vo.TLampMaterielVo;importorg.apache.ibatis.annotations.Mapper;importorg.apache.ibatis.annotations.Param;
@Mapperpublic interface TLampMaterielMapper extends BaseMapper{//添加数据,我就是在这里被坑的,我是用了@Param("")传递参数,导致我后面跟着百度的方法怎么都拿不到id
int insertMateriel(@Param("tLampMateriel") TLampMateriel tLampMateriel);
}
3、mapper.xml
踩坑之前在数据库建序列 SEQ_USER_ID
踩坑的代码: //参数这儿自己实体类的包
select SEQ_USER_ID.nextval from dualinsert into T_LAMP_MATERIEL(ID,NAME)values (#{id}, #{tLampMateriel.name})
正确的:
select SEQ_USER_ID.nextval from dualinsert into T_LAMP_MATERIEL (ID,NAME)values (#{tLampMateriel.id}, #{tLampMateriel.name})
keyProperty这里要使用 对象.id,这样一改我就拿到id了
-
Oracle 触发器实现主键自增
2021-12-16 16:34:55Oracle 触发器实现主键自增,正上班搬砖呢,我这亲爱的强哥说是创建一个主键自增1的触发器,然后就。。。。。。强哥,强哥,你的需求
1.首先创建表testUser
Oracle设置为不区分大小的,所以table名,言简意赅即可。
CREATE TABLE testUser ( id NUMBER ( 11 ) primary key, name VARCHAR ( 50 ) );
2.创建sequence,最小值为1,最大值为99999999,初始为1,步长1
sequence名的话针对某张表习惯命名为:seq_表名
CREATE sequence seq_testUser minvalue 1 maxvalue 99999999 START WITH 1 INCREMENT BY 1 nocache ORDER;
3.创建触发器
触发器是基于sequence 所以习惯命名为:trg_sequence名
CREATE OR REPLACE TRIGGER trg_seq_testUser BEFORE INSERT ON testUser FOR EACH ROW BEGIN SELECT seq_testUser.nextval INTO : new.id FROM dual; END;
4.插入一条数据
insert into testUser(username) values('强哥0'); insert into testUser(username) values('强哥1'); insert into testUser(username) values('强哥2');
5查询结果
select * from testUser
-
Oracle创建主键自增表(sql语句实现)及触发器应用
2020-09-10 23:09:37主键自增在插入数据的时候是很实用的,可以获取并操作返回的插入记录的ID,接下来介绍Oracle如何创建主键自增表,感兴趣的你可以了解下,就当是巩固知识,希望此文对你有所帮助 -
oracle批量插入带主键自增
2019-06-18 16:34:00https://blog.csdn.net/qq_37630354/article/details/82792288 转载于:https://www.cnblogs.com/qdck/p/11045962.html -
Navicat操作Oracle、JPA注解实现Oracle插入数据 主键ID自增
2020-12-21 23:06:53Oracle数据库不存在主键自增选项,现在想实现ID自增。博客链接:oracle 实现插入自增列打开Navicat,定位到自己创建的表。一、创建序列其他-序列填写相应的信息,特别注意:表数据为空的话,开始值从1开始。看清... -
MyBatis Oracle批量插入数据以及主键自增
2019-10-30 13:39:12insert into T_POSS_MERCHANT_BENEFICIARY (ID, MERCHANT_ID, NAME, LICENSE_TYPE_CODE, LICENSE_NO, EFFECT_DATE, INVALID_DATE, IS_LONG_TIME, ADDRESS, IS_DELETE, CREATE_TIME, UPDA... -
oracle和mysql插入数据时主键自增的方法
2020-07-03 22:03:18oracle和mysql插入数据时主键自增的方法 mysql插入数据时,只要在navcat勾上主键的自动递增,那么它在插入数据时就会自动增加。 在插入的时候sql语句: < insert id="insertToSysUser" useGeneratedKeys="true" ... -
Oracle 添加数据时设置主键自增
2021-10-21 16:36:15ID NUMBER(10) PRIMARY KEY, --主键ID SNAME VARCHAR2(20), ); 此时给学生表添加数据时 必须指定id INSERT INTO STUDENT VALUES(1,'Tom'); 下面用触发器和序列结合使得添加数据时id自动增长 不要指定了 --... -
cx_oracle插入大批量数据如何实现主键自增
2021-03-21 11:45:00oracle数据库是没有主键自增的,在插入数据时,如何实现主键的自动生成以及插入速度的提升是需要实际解决的问题 解决方案 先上代码,这里省略了关于cx_oracle知识,如需了解请点击本链接。 # -*- coding:utf-8 -... -
Oracle数据库主键自增
2021-05-13 11:17:48在学习mysql时,我们很容易通过auto_increment就能实现主键自增的功能,但是在Oracle数据库中,是没有这个关键字的,所以也不能通过这样来实现主键自增。下面我就为大家介绍两种实现主键自增的方法。 两种方法的... -
Oracle定义主键自增
2022-04-14 09:56:52Oracle数据库在进行insert操作的时候 是不会自己进行主键自增的,这是和Mysql不一样的地方。需要通过触发器和序列来完成主键自增的。 1、创建序列 WJSC_id_increment -- 是序列名称 可以自定义 CREATE SEQUENCE ... -
ORACLE 设置主键自增
2021-10-22 16:45:11例:当前有表,名【test_incr】,其主键【tid】需要设置自增。 1、首先,创建【test_incr】...2、创建完自增序列后,写一个触发器,每次插入数据时,自动触发自增,并将得到的值赋予主键。 create or replace trigg. -
ORACLE之创建主键自增序列
2021-03-19 15:35:46一个完整的主键自增序列创建完成。 SQL中无需添加主键值就可插入数据。 如果需要修改自增序列值,按照下图。 第一步:先查询序列中的最大序列值,select也会添加一次序列值 第二步:设置序列的递增或递减值,当前... -
Oracle数据库插入多条数据,主键自增
2017-08-08 21:45:12--while loop循环用法 (插入100W数据) declare v_num number(10) := 0; begin while v_num v_num := v_num + 1; INSERT INTO OOM_OBJMETA(CLASS_ID,OBJ_NAME,ORIG_ID,OBJ_ABS,EXTR_ST -
Oracle数据库中设置主键自增
2021-09-29 11:23:14在oracle数据库中设置逐渐自增策略的方式有两种: 建表: create table stu( sid int primary key, --设置id为主键 sname varchar(10), sex int ) 1.使用序列实现自增 (1)创建序列 create sequence SEQ... -
mybatis插入数据到oracle获取主键自增两次的解决办法
2019-11-04 11:21:30使用mybatis插入数据返回的主键和数据库中的不一致,实体类映射的主键自增1,数据库主键自增2,例如主键的当前值为1,那么下一条数据的主键应该为2,但是执行下列的配置文件对oracle数据库执行insert语句后,实体类... -
oracle建表设置主键自增
2019-02-18 09:26:36首先创建一张表 ...这样就可以就可以了,插入数据测试 insert into member(memberMail,memberName,memberPassword) values('123@qq.com','jack','123456'); 查询表中的数据 select * from member; -
Oracle数据库表添加主键自增
2021-07-19 11:30:52Oracle数据库中没有自增字段,我们可以通过创建序列和触发器的方式,间接地实现自增的效果。 举个实例: 1.创建表TEST create table TEST( id number(10) primary key, /*主键,自动增加*/ name varchar2(20),... -
oracle插入数据时自增ID的解决思路
2021-05-01 09:06:08一直在用MySQL,从来没有为自增ID发过愁,这初到oracle上,连自增ID都让我挠头,好在互联网资源丰富,我在充分吸取精华后,把我的一点经验总结出来给大家分享分享…1.创建一个sequence,命名建议和表名相关,这样每个有插入...