Если есть таблица под названием 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);
SqlFiddleDemo
Выход:
╔═════╗
║ col ║
╠═════╣
║ 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);
SqlFiddleDemo2
Выход:
╔════╗
║ id ║
╠════╣
║ 1 ║
╚════╝
Если таблица не существует, как метод возвращает ту же структуру:
SqlFiddleDemo_3
SqlFiddleDemo_4
Я считаю, что два способа Обеспечиваются производит различный результат. –
yes one использует Truncate, другой использует drop, но оба запроса предназначены для того, чтобы делать то же самое. –
Я думаю, что ваш второй случай без 'ELSE' – Horia