Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server cách loại bỏ danh tính từ một cột

Nếu bạn đang sử dụng SQL Server 2005 trở lên, bạn có thể thực hiện việc này như một thay đổi siêu dữ liệu đơn giản (NB: không yêu cầu một ấn bản hỗ trợ phân vùng như tôi đã nêu ban đầu).

Mã ví dụ bị đánh cắp một cách đáng xấu hổ từ giải pháp của Paul White trên Mục Kết nối Microsoft này .

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. Sử dụng dịch vụ tích hợp máy chủ SQL (SSIS) để điền vào bản ghi QuickBooks

  2. Loại toán hạng đụng độ:int không tương thích với ngày + Câu lệnh INSERT xung đột với ràng buộc FOREIGN KEY

  3. SQL Group By - Tạo nhiều cột tổng hợp từ một cột duy nhất

  4. Trường hợp thích hợp / tiêu đề trong t-sql

  5. Cách kích hoạt ràng buộc khóa ngoại trong SQL Server (Ví dụ T-SQL)