将唯一标识符外键插入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)