有人可以给我一个实时示例,其中包含我在 stackexchange 中找到的以下温度 table 和 table 变量示例
Can someone give me a real time example with the below temp table and tablevariable example that I found in stackexchange
temp table 和 table 变量之间的差异如下所述:
@table_variables
上的操作作为系统事务执行,独立于任何外部用户事务,而等效的 #temp table
操作将作为用户事务本身的一部分执行。因此,ROLLBACK
命令将影响 #temp table
,但 @table_variable
保持不变。
DECLARE @T TABLE(X INT)
CREATE TABLE #T(X INT)
BEGIN TRAN
INSERT #T
OUTPUT INSERTED.X INTO @T
VALUES(1),(2),(3)
/*Both have 3 rows*/
SELECT * FROM #T
SELECT * FROM @T
ROLLBACK
/*Only table variable now has rows*/
SELECT * FROM #T
SELECT * FROM @T
DROP TABLE #T
谁能告诉我上面提到的application/scenario什么时候可以实时使用?任何人都可以举一个实时的例子。谢谢
P.S。 - 引用自此 link:https://dba.stackexchange.com/questions/16385/whats-the-difference-between-a-temp-table-and-table-variable-in-sql-server/16386#16386
发生的事情是开发人员正在演示临时 table(对于大多数意图与常规 table 相同)和变量 table。当发生回滚时,对临时 table 所做的任何更改都将被撤消(table 处于与事务开始之前相同的状态)但变量已更改 - 它不受回滚影响。
在一个真实的例子中,只考虑你有一个事务并且以某种方式你的事务回滚但是你仍然想记录并查看事务失败的原因并尝试保留日志直到你执行没有任何回滚的事务。
在此示例中,您可以将所有日志信息捕获到一个 table 变量中。
temp table 和 table 变量之间的差异如下所述:
@table_variables
上的操作作为系统事务执行,独立于任何外部用户事务,而等效的 #temp table
操作将作为用户事务本身的一部分执行。因此,ROLLBACK
命令将影响 #temp table
,但 @table_variable
保持不变。
DECLARE @T TABLE(X INT)
CREATE TABLE #T(X INT)
BEGIN TRAN
INSERT #T
OUTPUT INSERTED.X INTO @T
VALUES(1),(2),(3)
/*Both have 3 rows*/
SELECT * FROM #T
SELECT * FROM @T
ROLLBACK
/*Only table variable now has rows*/
SELECT * FROM #T
SELECT * FROM @T
DROP TABLE #T
谁能告诉我上面提到的application/scenario什么时候可以实时使用?任何人都可以举一个实时的例子。谢谢
P.S。 - 引用自此 link:https://dba.stackexchange.com/questions/16385/whats-the-difference-between-a-temp-table-and-table-variable-in-sql-server/16386#16386
发生的事情是开发人员正在演示临时 table(对于大多数意图与常规 table 相同)和变量 table。当发生回滚时,对临时 table 所做的任何更改都将被撤消(table 处于与事务开始之前相同的状态)但变量已更改 - 它不受回滚影响。
在一个真实的例子中,只考虑你有一个事务并且以某种方式你的事务回滚但是你仍然想记录并查看事务失败的原因并尝试保留日志直到你执行没有任何回滚的事务。
在此示例中,您可以将所有日志信息捕获到一个 table 变量中。