将唯一标识符外键插入SQL Server中的表中

将唯一标识符外键插入SQL Server中的表中,sql,sql-server,Sql,Sql Server,我尝试使用如下语句插入虚拟搜索数据(每个语句的值不同): 但我得到了一个错误: [SQL Server] Conversion failed when converting from a character string to uniqueidentifier. 字段USAGEDATAIMORTID是一个uniqueidentifier字段,我在另一个成功接受数据的表中使用了类似的语句: INSERT INTO IMPORTUNIVERSITY (USAGED

我尝试使用如下语句插入虚拟搜索数据(每个语句的值不同):

但我得到了一个错误:

[SQL Server] Conversion failed when converting from a character string
             to uniqueidentifier.
字段USAGEDATAIMORTID是一个uniqueidentifier字段,我在另一个成功接受数据的表中使用了类似的语句:

INSERT INTO IMPORTUNIVERSITY
    (USAGEDATAIMPORTID, PAGENUMBERS, PUBLISHERNAME, RECORDID, DEPARTMENTNAME) 
    VALUES('925e3a5e-e971-11e0-9425-00219b71cde3', '2',
            'Nationwide News Pty Limited',
             '74', 'Business');
我能看到的唯一区别是
searchresulttextensionbase
USAGEDATAIMPORTID
importionversity
表的外键

有什么想法吗

编辑:

insert into SEARCHRESULTEXTENSIONBASE
            (CAL_ISBN, CAL_SEARCHRESULTID, USAGEDATAIMPORTID)
            VALUES('06463322521', '1317173481', convert(uniqueidentifier,'925e3a5e-e971-11e0-9425-00219b71cde3'))
给我同样的错误。

试试这个:

insert into SEARCHRESULTEXTENSIONBASE             
(CAL_ISBN, CAL_SEARCHRESULTID, USAGEDATAIMPORTID)             
VALUES('9780347011266', '1317168818', 
convert(uniqueidentifier, 'b6c51461-e966-11e0-b87a-0219b71cde3'))

您需要将字符串转换为uniqueidentifier数据类型。

您使用的GUID中少了一个数字。可能是复制粘贴错误

b6c51461-e966-11e0-b87a-0219b71cde3 - has 31 digits
F567D3BC-45E9-4891-A0FB-BDE143236867 - should have 32 digits (correct)
您可以按如下方式进行测试:

SELECT Cast('b6c51461-e966-11e0-b87a-0219b71cde3' as UniqueIdentifier)
投掷

Conversion failed when converting from a character string to uniqueidentifier.


工作正常。

看起来CAL\u ISBN或CAL\u SEARCHRESULTID是唯一标识符,您正在尝试插入字符串。请提供要插入到的表的架构定义,然后出现错误。

问题是由于两个表中没有匹配的UUID造成的,因此外键关系失败。如果错误信息不是那么误导的话,就更容易解决了


谢谢你的帮助

你确定这是一个有效的UUID吗?试着按下面的方式打字。修复了这个问题,只是把问题放在一起时出现了一个错误:)你桌上有触发器吗?还是复杂的检查约束?-1对于不完整和不正确的问题:OP下面的自我回答说明了一个与FK无关的问题。我认为原因可能是您的
uniqueidentifier
字符串格式不正确。@danpants:“啊,但另一个表中接受了相同的字符串”->那么这一定是错的?不,CAL_ISBN和CAL_SEARCHRESULTID都是整数字段,USAGEDATAIMPORT是唯一的UNIQUEIDENTIFIER。选择Cast('925e3a5e-e971-11e0-9425-00219b71cde3'作为UNIQUEIDENTIFIER)可以正常工作,因此,值本身是绝对正确的。请提供要插入到的表的架构定义并获得错误。另一个好主意是创建一个最小的复制,以便成员可以自己看到问题。不过,您很可能会解决为什么要创建复制的问题,因此这是一个双赢的结果。在发布两个表(包括任何FK)的定义后,如果没有父行,则错误消息将不同。这没有误导。这意味着您可能没有FK,因为您有不同的数据类型:但没有匹配的GUID不会给出此错误
Conversion failed when converting from a character string to uniqueidentifier.
SELECT Cast('F567D3BC-45E9-4891-A0FB-BDE143236867' as UniqueIdentifier)