如果SQL Server 2000中存在表,我怎么能删除它?

Ken*_*eng 20 sql sql-server

我有一个DTS包,删除一个表,然后创建它并填充它,但有时会发生一些事情,并且包在drop table之后失败.如果它重新运行则失败,因为尚未创建表.

像MySQL这样的SQLServer 2000有"if exists"吗?

谢谢.

Bob*_*bst 33

或者更快:

IF OBJECT_ID('temp_ARCHIVE_RECORD_COUNTS') IS NOT NULL  
  DROP TABLE temp_ARCHIVE_RECORD_COUNTS  
Run Code Online (Sandbox Code Playgroud)

  • 如果你想验证传递给object_id的对象实际上是一个用户表,那么该函数有一个第二个参数:IF OBJECT_ID('temp_ARCHIVE_RECORD_COUNTS','U')IS NOT NULL DROP TABLE temp_ARCHIVE_RECORD_COUNTS我相信这是没有记录但是在2000年,现在有记录. (6认同)

Bri*_*ndy 10

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TableName]') AND type in (N'U'))
DROP TABLE TableName;
GO
Run Code Online (Sandbox Code Playgroud)

您可以检查在sys.objects中表这里的类型定义列表,如果你想检查是否存在于数据库中的其他对象.


Blo*_*ard 8

还没有人提到过这种方法:

if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME='MyTable') 
begin 
    drop table MyTable
end
Run Code Online (Sandbox Code Playgroud)

这是最便携的方法 - 它至少可以在MSSQL2000上运行到MSSQL2008.

INFORMATION_SCHEMA表是SQL-92标准的一部分.