Jus*_*tin 1 sql t-sql sql-server sql-server-2008
我对建议用于检查表是否存在的代码感到有点困惑.有人可以解释我写的代码是否适用于检查表是否存在?
如果表存在,我希望它什么都不做.
这是我的代码:
BEGIN
SET NOCOUNT ON;
DECLARE @SQL NVARCHAR(MAX);
IF NOT EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N' + @TABLENAME + ') AND type in (N'U'))
BEGIN
SET @SQL =
N'CREATE TABLE ' + @TABLENAME + '
('
+ '[ID] [int] IDENTITY(1,1) NOT NULL,
[intID] [int] NULL,
[varID] [varchar](50) NULL,
[FormName] [varchar](250) NULL,
[UID] [varchar](3) NOT NULL,
CONSTRAINT [PK_Selections' + @TABLENAME + '_1] PRIMARY KEY CLUSTERED(
[ID]));';
EXEC sp_executesql @sql;
END
END
Run Code Online (Sandbox Code Playgroud)
我忘了提,目前该程序DOES创建表.但是,当我再次运行该过程时,它会尝试再次创建表,然后失败.
如果表存在,如何退出程序?
做这个简单的检查.无需查询sys.objects
...
IF OBJECT_ID(@TABLENAME, 'U') IS NULL
BEGIN
Run Code Online (Sandbox Code Playgroud)
您的检查失败,因为您实际上正在寻找一个名为" + @TABLENAME +" 的表