我有一个DTS包,删除一个表,然后创建它并填充它,但有时会发生一些事情,并且包在drop table之后失败.如果它重新运行则失败,因为尚未创建表.
像MySQL这样的SQLServer 2000有"if exists"吗?
谢谢.
或者更快:
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
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中表这里的类型定义列表,如果你想检查是否存在于数据库中的其他对象.
还没有人提到过这种方法:
if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME='MyTable') begin drop table MyTable end
这是最便携的方法 - 它至少可以在MSSQL2000上运行到MSSQL2008.
INFORMATION_SCHEMA表是SQL-92标准的一部分.