SQLServer 2008 MyBatis+联合主键+批量插入+忽略重复数据+联合外键

需求:批量添加设备,每一个设备,都从属于各自网络节点下的某个控制器。设备有多条定时信息。

分析:1.批量插入设备数据,在设备数量较多时可以提升效率。

           2.该设备只能通过网络节点id,控制器id和自身id确认唯一性。因此需要使用联合主键。

           3.可能有重复数据存在,如节点1_控制器1_设备1多次尝试添加自己。需要忽略重复数据。

           4.定时信息表需要外键映射设备表,设备表示联合主键,因此定时信息表需要添加联合外键。本例中,定时表外键关联只关心删除功能,即,删除某个设备后,会自动将外键关联的定时信息一起删除。

 

该问题可以在建表时解决。

           1.设置联合主键确定一个设备。

           2.MyBatis批量插入的xml写法,必须所有元素均不得为空

           3.使用IGNORE_DUP_KEY=ON忽略重复数据。避免批量插入发生重复时抛出异常,数据回滚。

           4.给定时信息表添加外键,关联删除

逐个解决:

1.建表

设备表:建表和设置联合主键,联合主键的组成元素都要设置不得为null。如下建表,设置了“IGNORE_DUP_KEY = ON”,即可忽略重复数据

if exists (select * from sysobjects where id = OBJECT_ID('[SysDevice]') and OBJECTPROPERTY(id, 'IsUserTable') = 1) 
DRO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值