Вставка строки в таблицу со значением автоинкремента - PullRequest
0 голосов
/ 23 марта 2011

У меня есть таблица PartsMedia, куда я могу вставить все изображения, связанные с продуктом. В таблице есть столбцы:

PartsMediaID  , auto-increment
PartsNo
MediaLink
MediaDescription
CatalogCode
SortCode

Я хочу вставить полную строку с автоматическим приращением, и номер детали должен совпадать с номером детали из таблицы PartsMaster. Medialink должен быть PartsNo + '-2.jpg' Mediadescription, например, «image2» КодКода должен быть «каталогом» и код сортировки должен быть '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 ]

1 голос
/ 23 марта 2011

Мне непонятно, что вы действительно хотите.

Но если это MS SQL, и вы пытаетесь переопределить столбец идентификаторов (который как автоинкремент), вам нужно сообщить Sql Server, что выможно вставить новое значение в столбце идентификаторов:

SET IDENTITY_INSERT tablename ON

YOUR INSERT GOES HERE

SET IDENTITY_INSERT tablename OFF
0 голосов
/ 23 марта 2011

В вашем операторе вставки отсутствует предложение select, которое извлекает правильные строки из таблицы PartsMaster.

              insert into foo(a, b, c)
              select x, y, z from T
0 голосов
/ 23 марта 2011

(предупреждение: разработчик делает вид, что знает о базах данных)

Похоже, у вас проблема с нормализацией данных.У каждой сущности должен быть только один идентификатор в вашей базе данных, и имеет смысл только что-то вроде идентификатора суррогатного ключа (для этой таблицы) с автоматическим приращением.сущности в другой таблице, у вас должно быть ограничение внешнего ключа, и этот столбец не должен иметь автоинкремент.

Причина в том, что если в будущем вам понадобится более одного носителя (изображение)для части?Возможно, в будущем вы захотите фотографии и видео.В этих сценариях вам необходимо поддерживать дубликаты PartsNo значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...