截断临时表与删除临时表Sql Server
有两种方法可以检查是否存在截断临时表与删除临时表Sql Server,sql,sql-server,temp-tables,Sql,Sql Server,Temp Tables,有两种方法可以检查是否存在temp table并重新创建它 一, 二, 如果有一个表名为tempTRUNCATE,那么使用一个表比另一个表有什么好处吗 IF Object_id('temp') IS NOT NULL TRUNCATE TABLE temp ELSE CREATE TABLE temp ( id INT ); 原始表有可能与ELSE语句中的模式不同,您将以糟糕的结构结束 CREATE TABLE temp(col VARCHAR(100)
temp table
并重新创建它
一,
二,
如果有一个表名为
temp
TRUNCATE
,那么使用一个表比另一个表有什么好处吗
IF Object_id('temp') IS NOT NULL
TRUNCATE TABLE temp
ELSE
CREATE TABLE temp
(
id INT
);
原始表有可能与ELSE
语句中的模式不同,您将以糟糕的结构结束
CREATE TABLE temp(col VARCHAR(100));
INSERT INTO temp VALUES ('a');
IF Object_id('temp') IS NOT NULL
TRUNCATE TABLE temp
ELSE
CREATE TABLE temp
(
id INT
);
INSERT INTO temp VALUES (1);
输出:
╔═════╗
║ col ║
╠═════╣
║ 1 ║
╚═════╝
╔════╗
║ id ║
╠════╣
║ 1 ║
╚════╝
如果有名为
temp
的表,请将其删除。然后重新创建它
IF Object_id('TEMPDB..#temp') IS NOT NULL
DROP TABLE #temp
CREATE TABLE #temp
(
id INT
);
在本例中,您始终确保在CREATE
语句中定义了结构
CREATE TABLE temp(col VARCHAR(100));
INSERT INTO temp VALUES ('a');
IF Object_id('temp') IS NOT NULL
DROP TABLE temp
CREATE TABLE temp
(
id INT
)
INSERT INTO temp
VALUES (1);
输出:
╔═════╗
║ col ║
╠═════╣
║ 1 ║
╚═════╝
╔════╗
║ id ║
╠════╣
║ 1 ║
╚════╝
如果表不存在,则两个方法返回相同的结构:
我相信您提供的两种方法产生不同的结果。是的,一种是使用Truncate,另一种是使用drop,但两种查询的目的是相同的。我认为您的第二种情况没有
,否则
我同意@Horia的说法。这就是为什么我认为这是不同的。您的第二个案例将不会在删除后重新创建该表。假设您打算在删除该表后重新创建该表。。无论如何,如果您不删除该表,它可能存在与您想要的模式不同的模式,因为之前的查询还使用了#temp
进行其他查询。是的,您是对的,从未考虑过结构更改...)