shi*_*etz 2 sql sql-server merge
我尝试执行此事务:
GO
BEGIN TRAN;
MERGE A AS t
USING B AS tmp
ON (t.domain = tmp.domain and t.link=tmp.link)
WHEN NOT MATCHED BY A
THEN INSERT(ipVal, domain, dateStart, dateUpdate, dateFinish, link) VALUES(tmp.ipVal, tmp.domain, tmp.dateStart, tmp.dateUpdate, tmp.dateFinish, tmp.link)
WHEN MATCHED
THEN UPDATE SET t.dateupdate = tmp.dateupdate
WHEN NOT MATCHED BY B
THEN UPDATE SET t.datefinish="a"
ROLLBACK TRAN;
GO
Run Code Online (Sandbox Code Playgroud)
我从这里获取了这段代码,但是当我尝试执行此操作时出现错误:
Incorrect syntax near 'A'
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
根据MSDN,WHEN NOT MATCHED分支的简化语法是
[ WHEN NOT MATCHED [ BY TARGET ] [...]
THEN <merge_not_matched> ]
[ WHEN NOT MATCHED BY SOURCE [...]
THEN <merge_matched> ] [ ...n ]
Run Code Online (Sandbox Code Playgroud)
解决的办法是,以取代WHEN NOT MATCHED BY A与WHEN NOT MATCHED BY TARGET和WHEN NOT MATCHED BY B带WHEN NOT MATCHED BY SOURCE.
TARGET并且SOURCE是T-SQL关键字而不是占位符.
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |