drop table #temp vs drop myTable如果它不为null

时间:2015-09-25 11:57:16

标签: sql sql-server sql-server-2008 tsql sql-server-2012

到目前为止,我正在使用

IF OBJECT_ID(''tempdb..#tempTable'') IS NOT NULL  -- dropping the temp table
   DROP TABLE #tempTable

有没有办法我可以对一个不是临时表的表使用相同的语句? 像这样尝试它并没有用:

IF OBJECT_ID(''myOwnDb.dbo.myTable'') IS NOT NULL  -- dropping the table
   DROP TABLE dbo.myTable

3 个答案:

答案 0 :(得分:2)

MS SQL服务器中的字符串应包含在单个引号中。

因此OBJECT_ID(''myOwnDb.dbo.myTable'')OBJECT_ID("myOwnDb.dbo.myTable")都不起作用。

OBJECT_ID('myOwnDb.dbo.myTable')可以完美运作。

答案 1 :(得分:1)

除了其他用户建议的wrt Object_ID之外,您可以使用INFORMATION_SCHEMA

来探索以下方法来检测表格是否存在
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
           WHERE TABLE_NAME = N'Your Table Name')
BEGIN
  Drop table <tablename>
END

答案 2 :(得分:0)

它不起作用的原因是因为你有额外的引号而不是单引号。

即。你应该这样做:

IF OBJECT_ID('myOwnDb.dbo.myTable') IS NOT NULL  -- dropping the table
   DROP TABLE dbo.myTable

但请注意,当您实际放下桌子时。您甚至没有引用数据库。所以你可以这样做:

IF OBJECT_ID('dbo.myTable') IS NOT NULL  -- dropping the table
   DROP TABLE dbo.myTable

除非您从其他数据库调用此命令。然后,您还需要在DROP TABLE命令中包含数据库名称。