我正在使用SQL Server 2012。
如果发生错误,如何继续查询执行?如果在以下示例中,第二个查询失败,则休息查询无法执行。
INSERT Schema1.[Menu] ([CompanyId], [Menu], [Role]) VALUES (5, N'Transaction', 2)
INSERT Schema2.[Menu] ([CompanyId], [Menu], [Role]) VALUES (5, N'Transaction', 2)
INSERT Schema3.[Menu] ([CompanyId], [Menu], [Role]) VALUES (5, N'Transaction', 2)
INSERT Schema4.[Menu] ([CompanyId], [Menu], [Role]) VALUES (5, N'Transaction', 2)
如何解决这个问题?
答案 0 :(得分:1)
或者,如果您不想记录任何内容,可以使用GO
分隔查询INSERT Schema1.[Menu] ([CompanyId], [Menu], [Role]) VALUES (5, N'Transaction', 2)
GO
INSERT Schema2.[Menu] ([CompanyId], [Menu], [Role]) VALUES (5, N'Transaction', 2)
GO
INSERT Schema3.[Menu] ([CompanyId], [Menu], [Role]) VALUES (5, N'Transaction', 2)
GO
INSERT Schema4.[Menu] ([CompanyId], [Menu], [Role]) VALUES (5, N'Transaction', 2)
GO
答案 1 :(得分:0)
您可以将每个语句包装在try..catch块中。
通过这种方式,您可以记录失败,并且没有完全没有按预期执行。
请参阅下面的链接以了解try catch语法。
答案 2 :(得分:0)
试试这个:
begin try
INSERT Schema1.[Menu] ([CompanyId], [Menu], [Role]) VALUES (5, N'Transaction', 2)
end try
begin catch
-- what you want to do in catch
end catch
begin try
INSERT Schema2.[Menu] ([CompanyId], [Menu], [Role]) VALUES (5, N'Transaction', 2)
end try
begin catch
-- what you want to do in catch
end catch
and so on...
答案 3 :(得分:0)
-- maybe like this :)
-- using tran catch
BEGIN TRY
BEGIN TRAN
INSERT Schema1.[Menu] ([CompanyId], [Menu], [Role])
VALUES (5, N'Transaction', 2)
INSERT Schema2.[Menu] ([CompanyId], [Menu], [Role])
VALUES (5, N'Transaction', 2)
INSERT Schema3.[Menu] ([CompanyId], [Menu], [Role])
VALUES (5, N'Transaction', 2)
INSERT Schema4.[Menu] ([CompanyId], [Menu], [Role])
VALUES (5, N'Transaction', 2)
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH