118

IDテーブルの ID 列に設定された列を使用してテーブルを作成しなかったため、吹き飛ばそうとしている既存のテーブルがあります。

SQL Server Management Studioを使用して、既存のテーブルの「Create To...」をスクリプト化し、次のようにしました。

CREATE TABLE [dbo].[History](
    [ID] [int] NOT NULL,
    [RequestID] [int] NOT NULL,
    [EmployeeID] [varchar](50) NOT NULL,
    [DateStamp] [datetime] NOT NULL,
 CONSTRAINT [PK_History] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

SQL私の質問は、結果のテーブルのID列がIdentityとして設定されるように、これをどのように変更すればよいですか?

4

4 に答える 4

163
CREATE TABLE [dbo].[History](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [RequestID] [int] NOT NULL,
    [EmployeeID] [varchar](50) NOT NULL,
    [DateStamp] [datetime] NOT NULL,
 CONSTRAINT [PK_History] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON)
) ON [PRIMARY]
于 2012-05-23T18:28:23.180 に答える
36

これはすでに回答されていますが、最も単純な構文は次のとおりだと思います。

CREATE TABLE History (
    ID int primary key IDENTITY(1,1) NOT NULL,
    . . .

より複雑な制約インデックスは、実際にオプションを変更したい場合に役立ちます。

ところで、私はこのような列に HistoryId という名前を付けることを好み、外部キー関係の列の名前と一致するようにします。

于 2012-05-23T19:19:21.680 に答える
12
[id] [int] IDENTITY(1,1) NOT NULL,

もちろん、SQL Server Management Studio でテーブルを作成しているので、テーブル デザイナーを使用して ID 仕様を設定できます。

ここに画像の説明を入力

于 2012-05-23T18:27:48.150 に答える
-3

一意のキーでは、最大 2 つの NULL 値が許可されます。説明:

create table teppp
(
id int identity(1,1) primary key,
name varchar(10 )unique,
addresss varchar(10)
)

insert into teppp ( name,addresss) values ('','address1')
insert into teppp ( name,addresss) values ('NULL','address2')
insert into teppp ( addresss) values ('address3')

select * from teppp
null string , address1
NULL,address2
NULL,address3

以下と同じ値を挿入しようとすると:

insert into teppp ( name,addresss) values ('','address4')
insert into teppp ( name,addresss) values ('NULL','address5')
insert into teppp ( addresss) values ('address6')

次のようなエラーが発生するたびに:

UNIQUE KEY 制約「UQ__teppp__72E12F1B2E1BDC42」に違反しています。オブジェクト 'dbo.teppp' に重複するキーを挿入できません。
ステートメントは終了されました。

于 2016-03-29T10:34:51.340 に答える