Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server cara menjatuhkan identitas dari kolom

Jika Anda menggunakan SQL Server 2005 atau yang lebih baru, Anda dapat melakukan ini sebagai perubahan metadata sederhana (NB:tidak memerlukan sebuah edisi yang mendukung partisi seperti yang saya nyatakan sebelumnya).

Contoh kode dicuri tanpa malu-malu dari solusi oleh Paul White pada Item Microsoft Connect ini .

USE tempdb;
GO
-- A table with an identity column
CREATE TABLE dbo.Source 
(row_id INTEGER IDENTITY PRIMARY KEY NOT NULL, data SQL_VARIANT NULL);
GO
-- Some sample data
INSERT dbo.Source (data)
VALUES (CONVERT(SQL_VARIANT, 4)),
        (CONVERT(SQL_VARIANT, 'X')),
        (CONVERT(SQL_VARIANT, {d '2009-11-07'})),
        (CONVERT(SQL_VARIANT, N'áéíóú'));
GO
-- Remove the identity property
BEGIN TRY;
    -- All or nothing
    BEGIN TRANSACTION;

    -- A table with the same structure as the one with the identity column,
    -- but without the identity property
    CREATE TABLE dbo.Destination 
    (row_id INTEGER PRIMARY KEY NOT NULL, data SQL_VARIANT NULL);

    -- Metadata switch
    ALTER TABLE dbo.Source SWITCH TO dbo.Destination;

    -- Drop the old object, which now contains no data
    DROP TABLE dbo.Source;

    -- Rename the new object to make it look like the old one
    EXECUTE sp_rename N'dbo.Destination', N'Source', 'OBJECT';

    -- Success
    COMMIT TRANSACTION;
END TRY
BEGIN CATCH
    -- Bugger!
    IF XACT_STATE() <> 0 ROLLBACK TRANSACTION;
    PRINT ERROR_MESSAGE();
END CATCH;
GO

-- Test the the identity property has indeed gone
INSERT dbo.Source (row_id, data)
VALUES (5, CONVERT(SQL_VARIANT, N'This works!'))

SELECT row_id,
        data
FROM    dbo.Source;
GO

-- Tidy up
DROP TABLE dbo.Source;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara membaca file besar dari disk ke database tanpa kehabisan memori?

  2. Bagaimana cara saya terhubung ke SQL Server melalui sqlalchemy menggunakan Otentikasi Windows?

  3. SQL AdvancedQuery

  4. Cara Menentukan Nilai untuk Bulan yang Hilang berdasarkan Data Bulan Sebelumnya di T-SQL

  5. Resolusi kelebihan beban gagal karena tidak ada 'baru' yang dapat diakses yang dapat dipanggil tanpa konversi yang menyempit