到目前为止,我一直在使用下面的格式来创建/更新表格
IF EXISTS (SELECT 1 FROM sysobjects WHERE name = 'table_name' AND type = 'U')
DROP TABLE [dbo].[table_name]
GO
CREATE TABLE [dbo].[table_name]()
GO
但是最近遇到了两个schema有同名表的情况。如何检查表是否存在于特定模式中?只有部分 SELECT 1 FROM sysobjects WHERE name = 'table_name' AND type = 'U'
需要修复,我已将其余部分更改为:
IF EXISTS (SELECT 1 FROM sysobjects WHERE name = 'table_name' AND type = 'U')
DROP TABLE [schema_name].[table_name]
GO
CREATE TABLE [schema_name].[table_name]()
GO
我当前的服务器版本是 2008R2
,所以我希望答案也适用于该版本。我还有许多其他检查是通过这种方式完成的,所以我真的不想完全改变这种模式。
最佳答案
尝试
IF OBJECT_ID('[schema_name].[table_name]') IS NOT NULL
DROP TABLE [schema_name].[table_name]
GO
关于sql-server - T-SQL 检查表是否存在于模式中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54591225/