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

时间:2015-08-17 06:11:30

标签: sql sql-server temp-tables

有两种方法可以检查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
    ) 

使用一个优于另一个

有什么好处

1 个答案:

答案 0 :(得分:2)

如果有一个名为canvas.setZoom(scale); $(function () { scale = 0.5; canvas1 = new fabric.Canvas('c1'); canvas1.setDimensions({ "width": canvas.getWidth() * scale, "height": canvas.getHeight() * scale }) var json = localStorage.getItem('save'); canvas1.loadFromJSON(json, function () { canvas1.renderAll(); }); canvas1.setZoom(scale); canvas1.renderAll(); }); 的表,则以其他方式创建新表。

temp

原始表格可能与TRUNCATE语句中的模式不同,您将以糟糕的结构结束。

IF Object_id('temp') IS NOT NULL
  TRUNCATE TABLE temp
ELSE
   CREATE TABLE temp
    (
       id INT
    );

SqlFiddleDemo

输出:

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 ║
╚═════╝

在此示例中,您始终确保在temp语句中定义结构。

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

CREATE TABLE #temp
(
       id INT
); 

SqlFiddleDemo2

输出:

CREATE

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

SqlFiddleDemo_3 SqlFiddleDemo_4