2011-09-28 72 views
1

我試圖插入使用下面的語句(該數值爲每一個不同的)虛擬搜索數據:插入唯一標識外鍵表中的SQL Server

insert into SEARCHRESULTEXTENSIONBASE 
    (CAL_ISBN, CAL_SEARCHRESULTID, USAGEDATAIMPORTID) 
    VALUES('9780347011266', '1317168818', '925e3a5e-e971-11e0-9425-00219b71cde3') 

但我發現了這個錯誤:

[SQL Server] Conversion failed when converting from a character string 
      to uniqueidentifier. 

領域USAGEDATAIMORTID是唯一標識符字段,我使用類似的聲明中,成功接受數據的另一個表:

INSERT INTO IMPORTUNIVERSITY 
    (USAGEDATAIMPORTID, PAGENUMBERS, PUBLISHERNAME, RECORDID, DEPARTMENTNAME) 
    VALUES('925e3a5e-e971-11e0-9425-00219b71cde3', '2', 
      'Nationwide News Pty Limited', 
      '74', 'Business'); 

,我可以看到的唯一區別是SEARCHRESULTEXTENSIONBASEUSAGEDATAIMPORTID是一個外鍵IMPORTUNIVERSITY表。

任何想法?

編輯:

insert into SEARCHRESULTEXTENSIONBASE 
      (CAL_ISBN, CAL_SEARCHRESULTID, USAGEDATAIMPORTID) 
      VALUES('06463322521', '1317173481', convert(uniqueidentifier,'925e3a5e-e971-11e0-9425-00219b71cde3')) 

給了我同樣的錯誤。

+0

你確定這是一個有效的UUID嗎?嘗試按如下所示進行類型轉換。 – Dave

+0

修正了將問題放在一起的錯誤:) – danspants

+2

桌子上有觸發器嗎?還是一個複雜的檢查約束? – gbn

回答

0

試試這個:

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

您需要將您的字符串轉換爲uniqueidentifier數據類型。

+0

一個問題,我想這無濟於事,我還是得到同樣的錯誤 – danspants

+0

那麼相信的理由,這將是你的'uniqueidentifier'字符串沒有以正確的格式。 – 2011-09-28 02:25:44

+0

啊,但在另一個表格中接受了相同的字符串。 – danspants

0

您在使用的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. 

SELECT Cast('F567D3BC-45E9-4891-A0FB-BDE143236867' as UniqueIdentifier) 

工作正常。

+0

在我的示例代碼中只是一個錯誤。 – danspants

+0

發佈兩個表的定義(包括任何FK) –

0

貌似CAL_ISBN或CAL_SEARCHRESULTID是唯一標識符和您要插入一個字符串代替。您能否提供您插入的表的模式定義並獲取錯誤。

+0

不可以CAL_ISBN和CAL_SEARCHRESULTID都是INTEGER字段,USAGEDATAIMPORT是唯一的UNIQUEIDENTIFIER。 – danspants

+0

SELECT Cast('925e3a5e-e971-11e0-9425-00219b71cde3'爲UniqueIdentifier)可以正常工作,所以值本身就是確定的。 – danspants

+0

您能否提供您要插入的表的模式定義並獲取錯誤。 –

0

問題是由那裏是兩個表中沒有匹配的UUID,因此外鍵關係失敗造成的。如果錯誤信息沒有那麼具有誤導性,會更容易解決。

謝謝你的幫助!

+0

如果沒有父行,錯誤消息會有所不同。這不是誤導。這意味着也許你沒有FK,因爲你有不同的數據類型:但沒有匹配的GUID不會給這個錯誤 – gbn