在PACS的MySQL数据库里,收费项目与HIS收费项目不能同步,需要手工更新。
一、使用INSERT INTO TABLE ON DUPLICATE KEY UPDATE 语句,将数据直接更新。数据库会判断,如果主键存在,则更新相应字段,如果主键不存在,则插入该行数据。
相当于是 UPDATE 和 INSERT 的集合。
优点:语句执行失败不会影响业务。要执行的语句数少,减少失误。
缺点:需要表具有主键,以主键为判断依据。如果是多列联合主键,不能更新联合主键中的列。
--更新数据。如果主键存在,则更新Name、Price、Py三个字段
INSERT INTO ChargeItem ( Id,Wb,Py,ItemKind,Unit,Spec,Price,Name) values
('256504','cectgr','sfctps','08','','','462.00','双肺CT(平扫)') ,
('21006','ut','bz','16','','','0.00','病重'),
('216156','rrjqssgy','smdjjcyz','12','元/项','','307.00','扫描电镜检查与诊断')
ON DUPLICATE KEY UPDATE Name=VALUES(Name),Price=VALUES(Price),Py=VALUES(Py)
二、使用 delete 后 insert 。
将原数据全部删除,再将新数据导入。需要提前做好数据备份,防止导入失败,影响业务。
--备份数据表
create table ChargeItem20170718 (select * from ChargeItem)
--查看备份情况
select * from ChargeItem20170718
--删除原数据
delete from ChargeItem
--插入新数据
insert ChargeItem ( Id,Wb,Py,ItemKind,Unit,Spec,Price,Name) values
('256504','cectgr','sfctps','08','','','462.00','双肺CT(平扫)') ,
('21006','ut','bz','16','','','0.00','病重'),
('216156','rrjqssgy','smdjjcyz','12','元/项','','307.00','扫描电镜检查与诊断')
--如果插入失败,还原数据表。先drop原表,再导入备份的数据
drop table ChargeItem
--还原备份的数据
create table ChargeItem ( select * from ChargeItem20170718)
Insert into ChargeItem (Id,Wb,Py,ItemKind,Unit,Spec,Price,Name) select Id,Wb,Py,ItemKind,Unit,Spec,Price,Name from ChargeItem20180307