Ошибка при создании таблицы: «В базе данных уже есть объект с именем ...», но нет объекта с таким именем - PullRequest
11 голосов
/ 26 марта 2010

Я пытаюсь создать таблицу на 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' в базе данных. Msg 1750, уровень 16, состояние 0, строка 2 может не создавать ограничения. Смотрите предыдущий ошибки.

но если я попытаюсь найти рассматриваемый объект, используя этот запрос:

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

Я получил это

(затронуто 0 строк)

Что происходит ????

Ответы [ 3 ]

27 голосов
/ 26 марта 2010

Вы пытаетесь создать таблицу с тем же именем, что и ограничение (QSW_RFQ_Log). Ваш запрос не находит объект, потому что создание таблицы завершается неудачно, поэтому объект не существует после ошибки. Выберите новое имя для ограничения, и оно будет работать, например ::

CONSTRAINT [QSW_RFQ_Log_PK] PRIMARY KEY CLUSTERED
6 голосов
/ 26 марта 2010

попробуйте это:

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

вы пытаетесь добавить первичный ключ с тем же именем, что и таблица, чтобы у ПК было другое имя.

4 голосов
/ 26 марта 2010

Вы не должны называть ограничение первичного ключа похожим на ваш datatable; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...