3

重複の可能性:
列にIDを設定します

私はテーブルを持っています。たとえば、列名がSernoのMessagesです。Sernoは、各メッセージのシリアル番号を保持します。ただし、システムは非常に古く、max(serno)コマンドを使用してこのシリアル番号を作成します。現在、この列をIDに変更しようとしていますが、各メッセージの現在のシリアル番号を失いたくありません。

これに対する解決策はありますか?

私はすでに新しいID列を作成し、そこにあるsernoから値をコピーしようとしていますが、機能しません。データベースとして機能する新しいテーブルを作成することも、メッセージごとに新しいシリアル番号を提供することはなく、私はそれを望んでいません。

どんなアイデアでも大歓迎です。

前もって感謝します

MA

4

2 に答える 2

1

テーブルをデザイン ビューで開いて、列を選択し、 を に設定してIdentitySpecificationみましたかYes(行が多い場合は、テーブルの完全なコピーが内部的に生成されるため、時間がかかる場合があります)。

于 2012-09-10T11:32:29.447 に答える
1

既存の列を変更して ID 列にすることはできません。

一時テーブルを作成し、それに値を挿入する必要があります。最後に、実際のテーブルを削除し、一時テーブルの名前を実際のテーブルに変更する必要があります

CREATE TABLE dbo.NewTable(ID int IDENTITY(1, 1),<other columns>)

SET IDENTITY_INSERT dbo.NewTable ON

INSERT  INTO dbo.NewTable ( Id, <other columns>)
SELECT  Id,  <other columns> FROM    <actual_table>
go

SET IDENTITY_INSERT dbo.NewTable OFF
go

DROP TABLE your_table
go

Exec sp_rename 'NewTable', 'actual_table'
于 2012-09-10T11:46:52.647 に答える