我得到了错误处理的 T-SQL 代码:
IF @@TRANCOUNT = 0
BEGIN
INSERT INTO #tmpErrors (Error)
SELECT 1
BEGIN TRANSACTION
END
我知道它会在 #tmpErrors 表中插入一个 1 以标记已发生错误。 但是我无法理解下面的句子:
SELECT 1 BEGIN TRANSACTION
我一直认为 BEGIN TRANSACTION 本身就是一个可执行语句,但现在这似乎是一个伪 FROM 子句。你有什么解释吗?
谢谢!
最佳答案
在 SQL Server 中,select
语句不需要 from
子句。
select 1
本身就是一个完整的语句,尽管在本例中它与 insert into
一起使用。
begin transaction
是一个单独的语句。
基本上语句是说“如果没有当前事务,记录它,并创建一个事务。”
IF @@TRANCOUNT = 0 -- if no current transaction
BEGIN
-- insert "1" into #tmpErrors
INSERT INTO #tmpErrors (Error)
SELECT 1
-- Begin a transaction
BEGIN TRANSACTION
END
关于sql - T-SQL : What does "SELECT 1 BEGIN TRANSACTION" mean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31381708/