【发布时间】:2017-02-26 14:08:22
【问题描述】:
当我尝试在一个 SQL 事务中捕获增量负载时。更新不起作用。基本上,它会无限期地执行 90k 行。
输入 SQL 事务
BEGIN;
INSERT INTO IncrementalLoad_Dest.dbo.tblDest
(ColID, ColA, ColB, ColC)
SELECT s.ColID, s.ColA, s.ColB, s.ColC
FROM IncrementalLoad_Source.dbo.tblSource s
LEFT JOIN IncrementalLoad_Dest.dbo.tblDest d ON d.ColID = s.ColID
WHERE d.ColID IS NULL ;
UPDATE d
SET
d.ColA = s.ColA
,d.ColB = s.ColB
,d.ColC = s.ColC
FROM IncrementalLoad_Dest.dbo.tblDest d
INNER JOIN IncrementalLoad_Source.dbo.tblSource s ON s.ColID = d.ColID
WHERE (
(d.ColA != s.ColA)
OR (d.ColB != s.ColB)
OR (d.ColC != s.ColC)
);
END;
更新语句未从 psql 实用程序执行。为什么它继续执行甚至没有抛出错误。
另外,尝试检查目标文件上的活动锁定。不存在锁。
请考虑用双引号括住每列的列以及用 greenplum SQL 语法编写的 SQL 事务。
对此的任何帮助将不胜感激。
【问题讨论】: