需求:批量添加设备,每一个设备,都从属于各自网络节点下的某个控制器。设备有多条定时信息。
分析: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