到目前为止,我正在使用
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
答案 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命令中包含数据库名称。