已有一个名为' '在数据库中

时间:2015-10-05 10:35:42

标签: sql sql-server

如果该表在' sysobjects'中不存在,则运行SQL语句来创建表。该表在不存在时成功创建,但是,一旦表存在,我在运行时会出现错误。此表必须始终保留且不被删除,这仅适用于首次运行实例。

    IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = '[tablename]')
    CREATE TABLE [tablename]
    (
    jobID int,
    fileName varchar (255),
    pathName varchar (255),
    );

因此,一旦创建了这个表,脚本就会再次运行,并且由于该表已经存在,它将在此SQL语句中出错。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

你不需要在表名,创作中引用:

IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = '[tablename]')
    CREATE TABLE [tablename]
    (
    jobID int,
    fileName varchar (255),
    pathName varchar (255),
    );

您正在创建一个名为'[tablename]'的表,并且您正在寻找名为[tablename]的表。

答案 1 :(得分:2)

在检查表格时避免使用方括号(' ['&']'

IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = 'tablename')
CREATE TABLE [tablename]
(
jobID int,
fileName varchar (255),
pathName varchar (255),
);

答案 2 :(得分:1)

你的问题真的太棒了...... :)

IF NOT EXISTS (SELECT 1 FROM sysobjects WHERE name = 'tablename')
Begin
    CREATE TABLE tablename
    (
    jobID int,
    fileName varchar (255),
    pathName varchar (255),
    )
End
Go

我认为[& ]让你感到困惑:)

答案 3 :(得分:-1)

如果您只想避免错误..

如果表存在,那么不要创建表,这里是代码,以便于检查以避免错误。

 IF OBJECT_ID('[tablename]') IS NULL
       BEGIN
          CREATE TABLE '[tablename]'
          (
            jobID int,
            fileName varchar (255),
            pathName varchar (255),
          );
       END

如果这是新创建的表,并且您想要检查是否已存在并且您想要DROP并创建(不建议)

  IF OBJECT_ID('[tablename]') IS NOT NULL
    DROP TABLE [tablename]

          CREATE TABLE '[tablename]'
          (
            jobID int,
            fileName varchar (255),
            pathName varchar (255),
          );

希望这有帮助。