Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server, jak usunąć tożsamość z kolumny

Jeśli korzystasz z SQL Server 2005 lub nowszego, możesz to zrobić jako prostą zmianę metadanych (Uwaga:nie wymagają wydania obsługującego partycjonowanie, jak pierwotnie stwierdziłem).

Przykładowy kod wykradziony bezwstydnie z obejścia przez Paula White'a na ten element Microsoft Connect .

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. Uruchom plik .sql z aplikacji w C# przy użyciu biblioteki SMO

  2. Czy połączenia między widokami a tabelą mogą negatywnie wpłynąć na wydajność?

  3. Struktura encji i VARBINARY

  4. Uprawnienia SQL Server w przechowywanych procesach z dynamicznym SQL

  5. Uzupełnij brakujące daty dla wyniku zapytania SQL Server za pomocą CTE