0

このようなテーブルを作成しました

    CREATE TABLE [dbo].[sydShopOrder](
    [rowNumber] [varchar](50) NULL,
    [firstName] [varchar](50) NULL,
    [lastName] [varchar](50) NULL,
    [employeeNumber] [varchar](50) NULL,
    [productID] [varchar](50) NULL,
    [shopID] [varchar](50) NULL,
    [location] [varchar](50) NULL,
    [address] [varchar](50) NULL,
    [department] [varchar](50) NULL,
    [datestamp] [date] NULL
) ON [PRIMARY]

[rowNumber]主キーとして作成しidentity、自動インクリメントで列にするつもりでした。しかし、私はそれをするのを忘れていました。そして今、データベースはライブ環境で稼働しています。私はこのバグを非常に遅く発見しました。これを修正する方法はありますか?列[rowNumber]をアイデンティティとして作成し、自動インクリメントしますか?

テーブルの現在のスクリーンショットは次のようになります

ここに画像の説明を入力

4

1 に答える 1

2

ドロップ[rownumber]してからIDで追加できます

Alter Table [dbo].[sydShopOrder] Drop Column rownumber
Go
Alter Table [dbo].[sydShopOrder]
Add rownumber Int Identity(1, 1)
Go

既存のデータの ID フィールドに入力する場合は、別の一時テーブルを作成し、その中にすべてのレコードを保持することをお勧めします[dbo].[sydShopOrder]。その後、truncate [dbo].[sydShopOrder]その一時テーブルから値を挿入します[dbo].[sydShopOrder]

CREATE TABLE #temp  ([firstName] [varchar](50) NULL,
    [lastName] [varchar](50) NULL,
    [employeeNumber] [varchar](50) NULL,
    [productID] [varchar](50) NULL,
    [shopID] [varchar](50) NULL,
    [location] [varchar](50) NULL,
    [address] [varchar](50) NULL,
    [department] [varchar](50) NULL,
    [datestamp] [date] NULL)

INSERT INTO #temp 
SELECT [firstName],[lastName],[employeeNumber],
       [productID], [shopID],[location],
       [address],[department],[datestamp]
FROM [dbo].[sydShopOrder]

TRUNCATE TABLE [dbo].[sydShopOrder]

INSERT INTO [dbo].[sydShopOrder]
SELECT * FROM #temp

サンプルのSQLFIDDLEを次に示します。

于 2013-09-25T04:49:22.297 に答える