Что не так с моей таблицей создания SQL? - PullRequest
1 голос
/ 21 июня 2009

Я использую среду управления SQL Server 2008 для выполнения следующих операторов SQL, и вот соответствующее сообщение об ошибке из среды управления SQL Server. Есть идеи, что не так?

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

Create TABLE [dbo].[BatchStatus](
    [BatchID] [uniqueidentifier] NOT NULL CONSTRAINT [PK_BatchStatus_ID],
    [BatchStatus] [int] NULL,
    CONSTRAINT [PK_BatchStatus_ID] PRIMARY KEY CLUSTERED 
    (
        [BatchID] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO



Msg 102, Level 15, State 1, Line 3
Incorrect syntax near ','.
Msg 319, Level 15, State 1, Line 8
Incorrect syntax near the keyword 'with'. If this statement is a common table
expression, an xmlnamespaces clause or a change tracking context clause, the 
previous statement must be terminated with a semicolon.

Ответы [ 3 ]

1 голос
/ 21 июня 2009

Вы определяете ограничение «PK_BatchStatus_ID» дважды - один раз в строке, где вы определяете поле BatchID, один раз в конце определения таблицы.

Вы можете ЛИБО определить ограничение "inline" с помощью столбца:

CREATE TABLE [dbo].[BatchStatus]
    ([BatchID] [uniqueidentifier] NOT NULL 
        CONSTRAINT [PK_BatchStatus_ID] PRIMARY KEY,
    [BatchStatus] [int] NULL
) ON [PRIMARY]

или затем вы можете определить его ПОСЛЕ все столбцы таблицы

CREATE TABLE [dbo].[BatchStatus]
    ([BatchID] [uniqueidentifier] NOT NULL,
    [BatchStatus] [int] NULL,
    CONSTRAINT [PK_BatchStatus_ID] PRIMARY KEY CLUSTERED 
    (
        [BatchID] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

но вы не можете иметь оба (частично)

Марк

1 голос
/ 21 июня 2009

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

Create TABLE [dbo].[BatchStatus](
    [BatchID] [uniqueidentifier] NOT NULL,
    [BatchStatus] [int] NULL,
    CONSTRAINT [PK_BatchStatus_ID] PRIMARY KEY CLUSTERED 
    (
        [BatchID] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
0 голосов
/ 21 июня 2009

Может быть, это то, что вы действительно хотели. Ограничение, определяющее значение по умолчанию

Create TABLE [dbo].[BatchStatus](
    [BatchID] [uniqueidentifier] NOT NULL CONSTRAINT [DF_BatchStatus_ID] DEFAULT((0)),
    [BatchStatus] [int] NULL,
    CONSTRAINT [PK_BatchStatus_ID] PRIMARY KEY CLUSTERED 
    (
        [BatchID] ASC
    ) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...