使用自动增量值将行插入表中

时间:2011-03-23 09:16:00

标签: c# asp.net sql

我有一个表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') 

我需要一些帮助。

亲切的问候,

3 个答案:

答案 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