当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如果SQLServer2000中存在表,我怎么能删除它?》经验,为你挑选了3个好方法。

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

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

谢谢.



1> Bob Probst..:

或者更快:

IF OBJECT_ID('temp_ARCHIVE_RECORD_COUNTS') IS NOT NULL  
  DROP TABLE temp_ARCHIVE_RECORD_COUNTS  

OBJECT_ID - MSDN参考 - SQL Server 2000

OBJECT_ID - MSDN参考 - SQL Server 2008


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

2> Brian R. Bon..:
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TableName]') AND type in (N'U'))
DROP TABLE TableName;
GO

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



3> Blorgbeard..:

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

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

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

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

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有