【问题标题】:Error creating a table : "There is already an object named ... in the database", but not object with that name创建表时出错:“数据库中已经有一个名为 ... 的对象”,但没有具有该名称的对象
【发布时间】:2010-03-26 13:08:13
【问题描述】:

我正在尝试在 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, Level 16, State 0, Line 2 可以 不创建约束。见上 错误。

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

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

我知道了

(0 行受影响)

这是怎么回事???

【问题讨论】:

    标签: sql sql-server sql-server-2005 tsql


    【解决方案1】:

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

    CONSTRAINT [QSW_RFQ_Log_PK] PRIMARY KEY CLUSTERED
    

    【讨论】:

    • 我知道这很愚蠢!我刚刚用我的剪切和粘贴刮掉了 PK_,谢谢!
    【解决方案2】:

    试试这个:

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

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

    【讨论】:

      【解决方案3】:

      你不应该像你的数据表那样命名主键约束;-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-12
        • 2019-09-18
        • 2011-03-29
        • 2016-04-08
        • 2014-08-01
        • 2010-11-12
        • 2021-05-10
        • 2013-10-21
        相关资源
        最近更新 更多