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

SQL Server 2008 でテーブル ID を再シードし、安全に元に戻す方法は?

    ID プロパティをリセットするコマンドは

    DBCC CHECKIDENT (tablename, RESEED, new_reseed_value)
      

    列 ID を 12345 に設定する場合は、これを実行します

    DBCC CHECKIDENT (beer, RESEED, 12345)
      

    テスト行を削除して値を以前の値に戻したい場合は、次のようにします。

    DELETE
    FROM beer
    WHERE beer_id >= 12345 ;
    
    DECLARE @NewSeed NUMERIC(10)
    SELECT @NewSeed = MAX(beer_id)
    FROM beer ;
    
    DBCC CHECKIDENT (beer, RESEED, @NewSeed)
      

    これは、シナリオのデモンストレーションです。 beer_id 列は IDENTITY (1, 1) で作成されることに注意してください これにより、ID が 1 ずつ増加して 1 にシードされます。

    CREATE TABLE beer
        (        
        beer_id NUMERIC(10) IDENTITY (1,1) NOT NULL,
        mnemonic NVARCHAR(8)
        );
    
    GO
    
    INSERT INTO beer(mnemonic) VALUES ('Beer 1')
    INSERT INTO beer(mnemonic) VALUES ('Beer 2')
    
    SELECT *
    FROM beer ;
    
    DBCC CHECKIDENT (beer, RESEED, 12345)
    GO
    
    INSERT INTO beer(mnemonic) VALUES ('Beer 3')
    INSERT INTO beer(mnemonic) VALUES ('Beer 4')
    
    SELECT *
    FROM beer ;
    
    DELETE
    FROM beer
    WHERE beer_id >= 12345 ;
    
    DECLARE @NewSeed NUMERIC(10)
    SELECT @NewSeed = MAX(beer_id)
    FROM beer ;
    
    DBCC CHECKIDENT (beer, RESEED, @NewSeed)
    GO
    
    INSERT INTO beer(mnemonic) VALUES ('Beer 5')
    INSERT INTO beer(mnemonic) VALUES ('Beer 6')
    
    SELECT *
    FROM beer ;
      

    1. MySQLで連続したgroupbyを実行するにはどうすればよいですか?

    2. mysql削除トリガー

    3. T-SQL火曜日#33:トリックショット:スキーマスイッチ-A-Roo

    4. OracleSQL-すべての行で異なる乱数を使用して列を生成および更新します