我有一个表PartsMedia,我可以在其中插入与产品相关的所有图像。 该表包含以下列:
PartsMediaID , auto-increment
PartsNo
MediaLink
MediaDescription
CatalogCode
SortCode
我想插入一个自动增量的完整行,而PartsNo应该与PartsMaster表中的PartsNo相同。 medialink应该是PartsNo +' - 2.jpg' 媒体描述例如是'image2' CatalogCode应该是'目录' 并且排序代码应为'0'
来自partsMaster表我只需要PartNo所以我可以将它添加到PartMedia表中。 PartNo是PartMedia表中的外键。
以下我到目前为止但没有运气
insert into dbo.PartsMedia (PartNo,MediaLink,MediaDescription,CatalogCode, SortCode)
values (dbo.PartsMaster.PartNo, PartsMaster.PartNo+'-2.jpg','image2', 'catalog','0')
我需要一些帮助。
亲切的问候,
答案 0 :(得分:1)
我不清楚你真正想要的是什么。
但是如果这是MS SQL,并且您尝试覆盖标识列(作为自动增量),则需要告诉Sql Server您可以在标识列中插入新值:
SET IDENTITY_INSERT tablename ON
YOUR INSERT GOES HERE
SET IDENTITY_INSERT tablename OFF
答案 1 :(得分:0)
(警告:Dev假装对数据库一无所知)
听起来你有数据规范化问题。每个实体在数据库中应该只有一个ID,只有代理键ID(对于该表)才能自动增加才有意义。
如果要引用不同表中实体的ID,则应该有一个外键约束,该列不应该自动递增。
原因是 - 如果将来你想要一个部件的多个媒体(图像)怎么办?也许将来你会想要照片和视频。在这些情况下,您需要支持重复的PartsNo
值。
答案 2 :(得分:0)
你的insert语句缺少一个select子句,它从PartsMaster表中获取正确的行。
insert into foo(a, b, c)
select x, y, z from T