注册

用MERGE INTO语句报错"违反表唯一性约束"

yq 2022/01/12 1489 6

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8.0
【操作系统】:ubuntu
【CPU】:intel
【问题描述】*:
(1).用下面语句建立表,主键: Id和TimeTag
CREATE TABLE T20220112Analog5Minute (Id BIGINT, TimeTag DATETIME, DataErrType TINYINT, ZDVal DOUBLE,primary key(Id,TimeTag))
(2).下面是插入一条记录的语句,各记录Id和TimeTag不同。
MERGE INTO T20220112Analog5Minute T1 USING (SELECT 3258149572131687778 AS IdS1,to_date(‘2022-01-12 00:00:00’,‘yyyy-mm-dd hh24:mi:ss’) AS DTS1 FROM dual) T2 ON (T1.Id=T2.IdS1 and T1.TimeTag=T2.DTS1) WHEN MATCHED THEN UPDATE SET DataErrType=2,ZDVal=0 WHEN NOT MATCHED THEN INSERT VALUES (3258149572131687778,to_date(‘2022-01-12 00:00:00’,‘yyyy-mm-dd hh24:mi:ss’),2,0)
问题:
用Qt编写,每100条语句一组,每个语句用逗号隔开, 形成执行多个MERGE INTO语句的命令字符串,用Qt的exec()函数一次提交,还用了事务处理,能正确运行很多天,但有时会出错,报: “违反表[T20220112Analog5Minute]唯一性约束”。我用的MERGE INTO语句含义是如果表中有Id和TimeTag相同的记录则只修改非主键的部分字段,如果不同则插入新记录,按理说即使每次MERGE INTO语句插入的内容完全相同也不会报错“违反表唯一性约束”,这个我在Windows下DM管理工具中和我程序中都验证了, 现场是用的ubuntu,请问我应怎样处理?

回答 0
暂无回答
扫一扫
联系客服