Можно ли определить новый столбец в таблице SQL Server, который автоматически генерирует уникальные идентификаторы для новых строк?

столбцы автоматического приращения в SQL Server заполняются автоматически; можно ли определить столбец UniqueIdentifier для автоматического создания при вставке без использования триггера?

Это будет дополнительный уникальный ключ на таблице. Мне нужно создать его, потому что нам нужен открытый первичный ключ, который можно использовать в строке запроса.

устаревшая инфраструктура по-прежнему полагается на старый первичный ключ int. Учитывая, что старая инфраструктура создает запись в во - первых, я хотел бы, чтобы SQL Server прозрачно создавал вторичный ключ GUID при вставке-если это вообще возможно.

большое спасибо

2 ответов


вы можете использовать столбец с типом Uniqueidentifier со значением по умолчанию NEWID ()


Если вы добавляете столбец в таблицу со значением по умолчанию NEWID (), а затем обновляете существующие строки, чтобы иметь новый идентификатор. Вы можете ва

--  Create test table
CREATE TABLE Test1
(
ID int IDENTITY(1,1)
,Txt char(1)
);

-- Insert data
INSERT INTO Test1(Txt)
SELECT 'a' UNION ALL
SELECT 'b' UNION ALL
SELECT 'c' UNION ALL
SELECT 'd' UNION ALL
SELECT 'e';

-- Add column
ALTER TABLE Test1
ADD GlobalID uniqueidentifier DEFAULT(NEWID());

-- View table, default value not added for existing rows
SELECT *
FROM Test1;

-- Update null ids with guids
UPDATE Test1
SET GlobalID = NEWID()
WHERE GlobalID IS NULL

-- Insert new data
INSERT INTO Test1(Txt)
SELECT 'f' UNION ALL
SELECT 'g' UNION ALL
SELECT 'h' UNION ALL
SELECT 'i' UNION ALL
SELECT 'j';

-- View table
SELECT *
FROM Test1;

-- Drop table
DROP TABLE Test1