Подтвердить что ты не робот

Как удалить таблицу, если она существует в SQL Server 2000?

У меня есть пакет DTS, который отбрасывает таблицу, затем создает ее и заполняет ее, но иногда что-то происходит, и пакет выходит из строя после таблицы перетаскивания. Если он повторится, это не поможет, потому что таблица еще не создана.

Есть ли что-то вроде "if exists" для SQLServer 2000, как в MySQL?

спасибо.

4b9b3361

Ответ 3

Никто еще не упомянул об этом методе:

if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME='MyTable') 
begin 
    drop table MyTable
end

Это самый переносимый метод - он работает, по крайней мере, с MSSQL2000 до MSSQL2008.

Таблицы INFORMATION_SCHEMA являются частью стандарта SQL-92.

Ответ 4

Конечно:

IF OBJECT_ID('YOURTABLENAME') IS NOT NULL

где YOURTABLENAME - любое имя вашей таблицы.

Если это временная таблица, просто добавьте tempdb.# перед вызовом функции OBJECT_ID.

Ответ 5

Одна вещь, которую следует помнить, когда вы бросаете объект и затем добавляете обратно в базу данных, также добавляет все разрешения обратно в таблицу. Это несколько раз подстегнуло нас.

Я проголосовал за TracyNixon. Я бы сказал, что вы хотите избегать непосредственного запроса таблицы sysobjects, потому что обновление Microsoft может сломать такой код. Вы изолируете себя от этого с помощью функции OBJECT_ID.

Ответ 6

Вам нужно проверить таблицу sysobjects

Ответ 7

Следующие работы просто замените TABLENAME на таблицу

IF EXISTS( SELECT * FROM dbo.sysobjects where id = object_id(N'TABLENAME') AND OBJECTPROPERTY(id, N'IsTable') = 1)
BEGIN
    DROP TABLE TABLENAME
END