繁体   English   中英

截断临时表Vs Drop临时表Sql Server

[英]Truncate temp table Vs Drop temp table Sql Server

有两种方法可以检查temp table的存在并重新创建它

1。

IF Object_id('TEMPDB..#temp') IS NOT NULL
  TRUNCATE TABLE #temp
ELSE
  CREATE TABLE #temp
    (
       id INT
    ) 

2。

IF Object_id('TEMPDB..#temp') IS NOT NULL
  DROP TABLE #temp

  CREATE TABLE #temp
    (
       id INT
    ) 

使用一个在另一个上有什么好处

如果有一个名为temp TRUNCATE表, 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);  

SqlFiddleDemo

输出:

╔═════╗
║ col ║
╠═════╣
║   1 ║
╚═════╝

如果有一个名为temp drop的表。 然后重新创建它。

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);  

SqlFiddleDemo2

输出:

╔════╗
║ id ║
╠════╣
║  1 ║
╚════╝

如果表不存在,则两个方法都返回相同的结构:

SqlFiddleDemo_3 SqlFiddleDemo_4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM