我正在使用powershell函数来执行SQL合并。我的inserts是有效的,但是我的delete正在删除目标表中的所有行。我的SQL语句看起来像这样,变量被PowerShell替换:
MERGE INTO $($Target) AS Target
USING $($Target)_TEMP AS Source
ON Target.[$($PrimaryKey)] = Source.[$($PrimaryKey)]
WHEN NOT MATCHED THEN
INSERT ($InsertColumns) VALUES ($InsertValues)
WHEN NOT MATCHED BY Source THEN
DELETE;你可以在这里看到完整的powershell函数:http://pastebin.com/uWY6VfmU
表数据示例:
domsamgrp (primary key) samaccountname GroupName Domain whenchanged
MYDOMAIN\user1\Tableau_Client user1 Tableau_Client MYDOMAIN 55:46.0
MYDOMAIN\user2\Tableau_Client user2 Tableau_Client MYDOMAIN 55:46.0
MYDOMAIN\user3\Tableau_CMO user3 Tableau_CMO MYDOMAIN 55:48.0
MYDOMAIN\user1\Tableau_EDM user1 Tableau_EDM MYDOMAIN 55:50.0
MYDOMAIN\user5\Tableau_EDM user5 Tableau_EDM MYDOMAIN 55:49.0发布于 2016-09-29 09:06:06
抱歉,各位。我在代码的其他地方发现了这个问题。我制作的源表只有几条记录。我的合并工作正常。我的代码是用来构建源表的,这是非常错误的。结束这个问题。
发布于 2016-09-29 07:55:13
我认为你的删除的条件是错误的
WHEN **NOT** MATCHED **BY Source** THEN
DELETE;删除注释
https://stackoverflow.com/questions/39758898
复制相似问题