sql实现同时向主表和子表插入数据方法

  使用sql语句实现同时向主表和子表插入数据方法:

  Oracle:

-- oracle创建sequence
create sequence SEQ_test
minvalue 1
maxvalue 99999999999999999999999999
start with 21
increment by 1
cache 20;

-- oracle 得到新插入数据的ID并使用
DECLARE newID varchar2(50);
begin
insert into table1(ID,aa,bb) values(SEQ_test.nextval,'7777','8888') RETURNING ID INTO newID;
COMMIT;
insert into table2(ID,pid) values(SEQ_test.nextval,newID);
end;

  SQL Server:

-- SQL Server 得到新插入数据的ID并使用
DECLARE @id int 
insert into table1(name,password) values (...)
set @id=@@identity --取到刚插入的id
insert into table2(age,sex,userid) values (...@id)

  

转载于:https://www.cnblogs.com/Big-Boss/p/11377693.html

MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。在进行批量插入主表子表的操作时,可以通过编写相应的SQL语句和使用MyBatis提供的批处理功能来实现。 基本步骤包括: 1. 准备主表子表插入SQL语句。 2. 使用MyBatis的`<foreach>`标签来构造批量插入数据集合。 3. 在Mapper接口中定义相应的方法,并使用`@Insert`注解或者XML映射文件中的`<insert>`标签来指定SQL语句。 下面是一个简单的例子: ```xml <!-- XML映射文件中的批量插入示例 --> <insert id="batchInsertMasterAndDetail" parameterType="java.util.List"> <!-- 插入主表数据 --> INSERT INTO master_table (field1, field2) VALUES <foreach collection="list" item="item" index="index" separator=","> (#{item.field1}, #{item.field2}) </foreach> <!-- 插入子表数据 --> INSERT INTO detail_table (master_id, detail_field) VALUES <foreach collection="list" item="item" index="index" separator=","> (#{item.id}, #{item.detailField}) </foreach> </insert> ``` 在实际应用中,可能还需要考虑主键的生成策略,比如数据库自增主键或者使用UUID等策略。如果使用数据库自增主键,需要确保批量插入子表数据中的外键字段是主表插入后的返回主键值。 需要注意的是,批量操作时要考虑到数据库的性能问题,特别是当批量数据量非常大时,可能需要分批次提交数据,以避免超出数据库的处理能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值