SQL Server 中的自动增量列会自动填充;是否可以在不使用触发器的情况下定义一个 UniqueIdentifier 列以在插入时自动生成?
这将是表上的辅助唯一键。我需要创建它,因为我们现在需要一个可以在查询字符串中使用的公共主键。
遗留基础设施仍然依赖于旧的 int 主键。鉴于旧的基础结构首先创建了记录,我希望 SQL Server 在插入时透明地创建辅助 GUID 键 - 如果可能的话。
非常感谢
SQL Server 中的自动增量列会自动填充;是否可以在不使用触发器的情况下定义一个 UniqueIdentifier 列以在插入时自动生成?
这将是表上的辅助唯一键。我需要创建它,因为我们现在需要一个可以在查询字符串中使用的公共主键。
遗留基础设施仍然依赖于旧的 int 主键。鉴于旧的基础结构首先创建了记录,我希望 SQL Server 在插入时透明地创建辅助 GUID 键 - 如果可能的话。
非常感谢
您可以使用具有唯一标识符类型的列,默认值为 NEWID()
如果您将默认值为 NEWID() 的列添加到表中,然后更新现有行以具有新的 id。你可能会
-- 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