1、手动添加主键:
insert all
into tableName (id, name, age) values ( 1, 'name1', 20)
into tableName (id, name, age) values ( 2, 'name2', 21)
into tableName (id, name, age) values ( 3, 'name3', 18)
select 1 from dual
结尾处 “select 1 from dual” 不能缺少。
2、通过序列与触发器添加主键:
1)、创建表:
create table tableName(
id Number(10) not null,
name Varchar2(200),
age Number(14,2),
constraint pk_tableName_id PRIMARY KEY (id) --- 主键
)
2)、创建序列:
create sequence seq_tableName
start with 1 ----- 开始值
maxvalue 99999999999 -----最大值
increment by 1; -------每次新增大小值
3)、创建触发器:
create or replace trigger tr_tableName
before insert on tableName
for each row ----对表的每一行触发器执行一次
begin
select seq_tableName.nextval into :new.id from dual;
end;
seq_tableName 为序列, id 为tableName的主键id
4)、同时插入多条数据,主键自己生成:
insert all
into tableName (name, age) values ( 'name1', 20)
into tableName (name, age) values ( 'name2', 21)
into tableName (name, age) values ( 'name3', 18)
select 1 from dual
5)、在MyBatis中使用:
<insert id="addList">
insert all
<foreach collection="list" index="index" item="entity" >
into t_relation_party(
name,
age)
values(
#{entity.name},
#{entity.age})
</foreach>
select 1 from dual
</insert>
在insert all语句里不能直接使用seq_test_insert.nextval,因为即便每个into语句里都加上seq_test_insert.nextval也不会获得多个值。