如何使用uniqueidentifier类型列将行添加到SQL Server表?

时间:2018-03-13 10:50:06

标签: sql-server tsql

我需要在名为Customers的SQL Server表中添加一行。

以下是表格设计:

enter image description here

这里我是如何尝试在上面的表格中添加一行:

INSERT INTO Customers (Id, Name) 
VALUES (1, 'test');

但是我收到了这个错误:

  

Msg 206,Level 16,State 2,Line 1
  操作数类型冲突:int与uniqueidentifier

不兼容

正如您可以看到ID类型的uniqueidentifier列。如何在上面的列中添加uniqueidentifier

2 个答案:

答案 0 :(得分:2)

使用newid()

INSERT INTO Customers(Id, Name) VALUES (newid(), 1);

请注意,这通常使用default值来完成:

create table customers (
    id uniqueidentifier default newid(),
    . . .
);

由于各种技术原因,建议不要将uniqueidentifier列作为主键 - 尽管您可以使用newsequentialid()解决一些问题。相反,请将其设为唯一键并使用另一个密钥(通常是identity()列)作为主键。

答案 1 :(得分:2)

uniqueidentifier数据类型存储16字节二进制值,作为全局唯一标识符(GUID)运行。

使用示例:

insert into customers values('7E3E3BC1-9B15-473C-A45A-46D89689156C', 'Tomas')
insert into customers values(newid(), 'Tomas')

查看更多详情:https://technet.microsoft.com/en-US/library/ms190215(v=sql.105).aspx