2011-03-23 99 views
0

我收到了一個表格PartsMedia,其中我可以插入與產品相關的所有圖像。 表有列:用自動增量值插入表格

PartsMediaID , auto-increment 
PartsNo 
MediaLink 
MediaDescription 
CatalogCode 
SortCode 

我要插入自動遞增一個完整的行和PartsNo應該是一樣的PartsNo從PartsMaster表。 所述的MediaLink應該是PartsNo +「-2.jpg」 媒體描述是例如「圖像2」 的CatalogCode應該是「目錄」 和分類代碼應該是「0」

從partsMaster表我只需要PartNo所以我可以將它添加到PartMedia Table。 PartNo是PartMedia表中的外鍵。

我走到這一步,下面,但沒有運氣

insert into dbo.PartsMedia (PartNo,MediaLink,MediaDescription,CatalogCode, SortCode) 
values (dbo.PartsMaster.PartNo, PartsMaster.PartNo+'-2.jpg','image2', 'catalog','0') 

我需要一些幫助。

親切的問候,

+1

您正在使用哪個數據庫?在MySQL中,你需要在行上添加一個auto_increment ... – sharpner 2011-03-23 09:19:20

+0

你會得到什麼樣的錯誤?您是否將PartsMediaID配置爲自動增量和主鍵? – Pleun 2011-03-23 10:42:51

+0

PartsmediaID是主鍵並具有自動增量值,partsmedia表中的ParNo應該是PartsMaster表中的PartsNo值 – Paul 2011-03-23 10:49:36

回答

0

您的insert語句缺少從PartsMaster表中獲取正確行的select-clause。

   insert into foo(a, b, c) 
       select x, y, z from T 
+0

感謝您指引我朝着正確的方向:插入PartsMedia(PartNo,MediaLink,MediaDescription,CatalogCode, SortCode) from partmaster選擇partno,partno +'-3.jpg','afbeelding3','catalog','0' – Paul 2011-03-24 14:13:17

1

我不清楚你真的想要什麼。

但是,如果這是MS SQL,和你想覆蓋標識列(其中作爲自動遞增),你需要告訴SQL服務器,你可以在標識列中插入一個新值:

SET IDENTITY_INSERT tablename ON 

YOUR INSERT GOES HERE 

SET IDENTITY_INSERT tablename OFF 
0

(警告:Dev假裝知道關於數據庫的任何東西)

這聽起來像你有一個數據規範化問題。每個實體在數據庫中應該只有一個ID,並且只有代理鍵ID(對於該表)才能自動遞增。

如果您想引用不同表中某個實體的ID,則應該有一個外鍵約束,並且該列不應該是自動遞增的。

原因是 - 如果將來你想要一部分媒體(圖像)多於一個?也許將來你會想要圖片和視頻。在這些情況下,您需要支持重複的PartsNo值。