代码之家  ›  专栏  ›  技术社区  ›  DavRob60

创建表时出错:“数据库中已有一个名为…的对象”,但没有该名称的对象

  •  11
  • DavRob60  · 技术社区  · 16 年前

    我正在尝试在Microsoft SQL Server 2005(Express)上创建表。

    当我运行这个查询时

    USE [QSWeb]
    GO
    
    /****** Object:  Table [dbo].[QSW_RFQ_Log]    Script Date: 03/26/2010 08:30:29 ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    SET ANSI_PADDING ON
    GO
    
    CREATE TABLE [dbo].[QSW_RFQ_Log](
        [RFQ_ID] [int] NOT NULL,
        [Action_Time] [datetime] NOT NULL,
        [Quote_ID] [int] NULL,
        [UserName] [nvarchar](256) NOT NULL,
        [Action] [int] NOT NULL,
        [Parameter] [int] NULL,
        [Note] [varchar](255) NULL,
     CONSTRAINT [QSW_RFQ_Log] PRIMARY KEY CLUSTERED 
    (
        [RFQ_ID] ASC,
        [Action_Time] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    

    我收到这个错误消息

    消息2714,级别16,状态4,行2 已存在名为的对象 数据库中的“qsw-rfq-log”。味精 1750,16级,状态0,第2行可以 不创建约束。见前 错误。

    但如果我尝试使用此查询查找有问题的对象:

    SELECT *
    FROM QSWEB.sys.all_objects
    WHERE upper(name) like upper('QSW_RFQ_%') 
    

    我得到了这个

    (0行受影响)

    怎么回事?????

    3 回复  |  直到 16 年前
        1
  •  27
  •   Jamie Ide    16 年前

    您正在尝试创建与约束同名的表(qsw-rfq-log)。您的查询找不到该对象,因为表创建失败,因此出错后该对象不存在。为约束选择一个新名称,它将起作用,例如:

    CONSTRAINT [QSW_RFQ_Log_PK] PRIMARY KEY CLUSTERED
    
        2
  •  6
  •   KM.    16 年前

    试试这个:

    CONSTRAINT [PK_QSW_RFQ_Log] PRIMARY KEY CLUSTERED 
    add this    ^^^
    

    您正在尝试添加与表同名的主键,使pk具有不同的名称。

        3
  •  4
  •   Scoregraphic    16 年前

    不应将主键约束命名为DataTable;-)