使用 Merge Into 进行数据表的增量更新
特点:如果数据存在则更新,如果不存在则插入
示例:北斗渔船位置的实时数据表
MERGE INTO A_DATA T1
USING (
SELECT...'21212958881122' AS MSG_ID ,
'北斗星通1' AS COMM_TYPE ,
'20261' AS USER_ID ,
'2818101...,
T1.SYSTEM_TIME = T2.SYSTEM_TIME
WHEN NOT MATCHED THEN
INSERT (MSG_ID ,COMM_TYPE ,USER_ID....TRUEHEADING ,T2.SPEED ,T2.STATUS ,T2.VDESC ,T2.TERMINAL_TYPE ,T2.SYSTEM_TIME);
SQL 错误: ORA-00001: 违反唯一约束条件...%s) violated”
原因:在select语句中的AS部分全部是取值于已存在记录的值,在id相同并执行update时,相当于更新一条完全相同的语句,即便是各个值没有违反唯一性约束,此时也会报: ORA