唯一标识符列出现问题

3
我是一名有用的助手,可以为您翻译文本。

我刚开始使用SQL Server,并且在向具有uniqueidentifier类型列的表中添加值时遇到了一些麻烦。

该表包括:

ID (uniqueidentifier), CODE (nchar(5)), COUNTRY_CODE(nchar(2)), NAME(nchar30)  

我尝试添加来自Excel和CSV文件的值,它们基本上是这样的:
DEBE,DE,Berlin

我无法加载它,总是出现与该ID字段有关的一些错误。
当我尝试手动添加值时,例如:
INSERT INTO [Portfolio].[dbo].[Regions](CODE, COUNTRY_CODE, NAME) 
VALUES ('DEBE', 'DE', 'Berlin');

它说:

将值NULL插入列'ID'时,表'Portfolio.dbo.Regions'出现问题;该列不允许为空。插入失败。

当我添加一个'id'列和一个数字时,显然会收到信息,int与'uniqueidentifier'不兼容。
我甚至尝试创建临时表(用INT作为'id'而不是uniqueidentifier),并从中复制值到此表中(没有'id'列,它应该自动生成)。
我唯一能想到的就是'ID'列没有自动创建值,我不知道如何解决。有人能帮忙吗?
4个回答

5

唯一标识符是一种特殊类型,可用于生成GUID。它长度为16字节,并且不像自增列那样自动递增。如果要从varchar获取正确的唯一标识符,则需要使用Convert或Cast子句,如果超过16个字节,则会被截断。

使用NewID()生成新的唯一标识符。

也许这个链接可以帮助您


4
如上所述,使用NewID()创建标识符。
当您处于表的设计模式中时,可以将NewID()放置在“默认值或绑定”插槽中。这意味着对于您插入表中的任何新记录(例如CODE,COUNTRY_CODE,NAME),都将创建唯一标识符。

0
我认为你要找的是一个身份字段。UniqueIdentifier字段用于存储GUID。
将字段类型更改为int,然后将其身份规范更改为“是”。
另一种解决方案是从代码中传递自己的GUID到ID字段。

0

虽然回答有点晚,但这可能对某些人有帮助。进入SQL表设计模式,选择所需表的属性,在详细选项卡下(在表下方),您将看到一个属性RowGuid --> Yes(确保将其更改为Yes)。

干杯🙂


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接