SQL Server的public class getVariable{
public static void main(String[] args) {
ReadPropertyFile propCls = new ReadPropertyFile();
propCls.setValue();
String gateway= propCls.getGateway();
System.out.println(gateway);
}
}
如何工作?
如果要执行多项操作(MERGE
,INSERT
,UPDATE
)那么是什么控制了这些操作的执行顺序?
答案 0 :(得分:0)
来自MSDN:
对于MERGE中指定的每个插入,更新或删除操作 声明,SQL Server触发定义的任何相应的AFTER触发器 在目标表上,但不保证要触发的操作 触发第一个或最后一个。
如果我已正确理解文档,则SQL Server不保证任何订单。它会在它认为合适时执行您的查询。
答案 1 :(得分:0)
根据我的评论,查看MERGE
MERGE
。
在INSERT
语句中,您可以指定如何匹配源表和目标表之间的记录以及存在(或不匹配)时要执行的操作。因此,这决定了UPDATE
编辑的记录,DELETE
和MERGE Production.UnitMeasure AS target
USING (SELECT @UnitMeasureCode, @Name) AS source (UnitMeasureCode, Name)
ON (target.UnitMeasureCode = source.UnitMeasureCode)
WHEN MATCHED THEN
UPDATE SET Name = source.Name
WHEN NOT MATCHED THEN
INSERT (UnitMeasureCode, Name)
VALUES (source.UnitMeasureCode, source.Name)
OUTPUT deleted.*, $action, inserted.* INTO #MyTempTable;
d。
请查看上述文档页面中的示例:
target.UnitMeasureCode = source.UnitMeasureCode
此处,它们匹配Name
上的记录以及匹配的记录,它们使用来自源的SELECT Id,
SUBSTRING(
(SELECT ',' + lts.Selection
FROM LiveTrainingSelections lts
INNER JOIN LiveTraining lt ON lt.Id = lts.LiveTrainingId
WHERE lts.SelectionType = 'Session Format' and lts.LiveTrainingId = lt.Id
FOR XML PATH('')),2,200000) AS SelectionDetails
FROM LiveTraining lt
JOIN LiveTrainingSelections lts
ON lt.Id = lts.LiveTrainingId
值更新目标记录。如果没有匹配项,则使用源记录中的值将新记录插入目标表。