【发布时间】:2018-02-18 20:03:52
【问题描述】:
我正在使用MERGE 语句将XML 输入插入到SQL Server 数据库表中。如何在WHEN MATCHED 块中执行多个条件。请参考以下代码。
USING TableRelationship AS new
ON (new.TableRelationshipTypeID = old.TableRelationshipTypeID) AND old.ToRoleID = @RoleID
WHEN MATCHED THEN
UPDATE
SET old.FromRoleID = new.FromRoleID
-- Condition 2
-- Condition 3
目前WHEN MATCHED 它只执行这个old.FromRoleID = new.FromRoleID 行。如何在WHEN NOT MATCHED 条件内执行所有 3 行 (-- Condition 2 and 3)。
例如:
这是我所期望的。 WHEN MATCHED 我只想更新旧字段 (old.ThruDate = GETDATE()) 并在同一张表中插入一条记录。我不能用逗号分隔这些语句。 SQL 发出
语法错误
MERGE INTO Party.TableRelationship AS old
USING TableRelationship AS new ON (new.TableRelationshipTypeID = old.TableRelationshipTypeID) AND old.ToRoleID = @RoleID
WHEN MATCHED THEN
UPDATE
SET old.ThruDate = GETDATE(),
INSERT (FromRoleID, ToRoleID, TableRelationshipTypeID)
VALUES (new.FromRoleID, new.ToRoleID, new.TableRelationshipTypeID);
谢谢。
【问题讨论】:
-
请显示第二个和第三个条件的代码(如果它不运行也没关系,只需显示那里的逻辑即可)。
-
可能相关(或重复),具体取决于此处实际询问的内容:stackoverflow.com/questions/25848219/…
标签: sql sql-server tsql merge sql-update