2

可能であれば、CREATE TABLE ステートメントで、ANSI 準拠の方法で名前付きのデフォルト値を作成したい

通常 ALTER TABLE ステートメントで記述するように CONSTRAINT を追加しようとすると、失敗します (少なくとも SQL SERVER では、ANSI 準拠のステートメントを見つけることを望んでいることを強調しますが、さまざまなステートメントで機能することを望んでいます)。の Ado.NET DbConnections)。

例:

CREATE TABLE [dbo].[MyExample]
(
Id int NOT NULL IDENTITY (1, 1),
Name varchar(512) NOT NULL,         
IsActive bit NOT NULL,
CONSTRAINT PK_MyExample PRIMARY KEY CLUSTERED (Id),
CONSTRAINT DF_MyExample_IsActive  DEFAULT (1) FOR [IsActive]
)

エラー:

「for」付近の構文が正しくありません。

4

2 に答える 2

5

ちなみに、ISO (I = International) と ANSI (A + American) の両方である SQL-92 標準はDEFAULT、名前を付けられる制約ではありません。SQL-92 ではDEFAULT、列定義とインラインでのみ定義でき、データ型とNOT NULL(使用されている場合) の間にある必要があります。

CREATE TABLE T (c INTEGER DEFAULT 1 NOT NULL UNIQUE);

小さな例には、多くの非標準構文があることに注意してください。

  • 引用識別子としての角括弧 (二重引用符である必要があります)
  • 非準拠のデータ型 (例: 不正なbitnull 動作)
  • 省略されたデータ型 (例:intではなくINTEGER)
  • IDENTITY
  • CLUSTERED
于 2011-10-27T10:18:13.360 に答える
1

ANSIに準拠していませんか?

CREATE TABLE [dbo].[MyExample]
(
    Id int NOT NULL IDENTITY (1, 1),
    Name varchar(512) NOT NULL,         
    IsActive bit NOT NULL CONSTRAINT DF_MyExample_IsActive DEFAULT (1),
    CONSTRAINT PK_MyExample PRIMARY KEY CLUSTERED (Id)
)
于 2011-10-26T22:02:11.863 に答える