sql >> データベース >  >> RDS >> Sqlserver

既存の列にIDを追加する

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

    2つのオプションがあります

    1. IDを使用して新しいテーブルを作成し、既存のテーブルを削除します

    2. IDを使用して新しい列を作成し、既存の列を削除します

    アプローチ1.(新しいテーブル )ここでは、新しく作成されたID列に既存のデータ値を保持できます。 「存在しない場合」が満たされない場合、すべてのデータが失われることに注意してください。そのため、条件もドロップするようにしてください!

    CREATE TABLE dbo.Tmp_Names
        (
          Id int NOT NULL
                 IDENTITY(1, 1),
          Name varchar(50) NULL
        )
    ON  [PRIMARY]
    go
    
    SET IDENTITY_INSERT dbo.Tmp_Names ON
    go
    
    IF EXISTS ( SELECT  *
                FROM    dbo.Names ) 
        INSERT  INTO dbo.Tmp_Names ( Id, Name )
                SELECT  Id,
                        Name
                FROM    dbo.Names TABLOCKX
    go
    
    SET IDENTITY_INSERT dbo.Tmp_Names OFF
    go
    
    DROP TABLE dbo.Names
    go
    
    Exec sp_rename 'Tmp_Names', 'Names'
    

    アプローチ2(新しい列 )新しく作成されたID列に既存のデータ値を保持することはできません。ID列には番号のシーケンスが保持されます。

    Alter Table Names
    Add Id_new Int Identity(1, 1)
    Go
    
    Alter Table Names Drop Column ID
    Go
    
    Exec sp_rename 'Names.Id_new', 'ID', 'Column'
    

    詳細については、次のMicrosoftSQLServerフォーラムの投稿を参照してください。

    列をidentity(1,1)に変更する方法



    1. SQL Serverでのdatetime2とdatetimeoffsetの違い:違いは何ですか?

    2. SQL Server PIVOTはおそらく?

    3. WAMPでPHPMyAdminの失われたMySQLパスワードへのアクセスを回復する

    4. Oracle/SQLiteで文字列から部分文字列を抽出する方法