Вставьте или обновите, если запись находится в таблице

У меня есть таблицы Cars и CarDescriptions

автомобили: IDCar (интервал, PK, автоинкремент) carsDesciptions (IDDescription, Заголовок (nvarchar), Содержание (nvarchar), idCar (интервал, FK)

В приложении я добавляю автомобили и редактирую существующие.

Мои проблемы:

1. Как сохранить измененный Автомобиль с описаниями в базе данных??

У меня есть идентификатор Автомобиля, и у меня есть идентификатор Описаний

Класс CarDescirption не имеет никакого пула как IsChanged, таким образом,

Я не хочу делать что-то как:

  1. удалите из carsdescriptions где idcar = idcar
  2. вставьте в cardescriptions (@Header, @Content, @IDCar)

запись должна быть обновлена, если находится в таблице, и вставлен, если не существует в таблице

8
задан Juan Mellado 3 May 2012 в 10:50
поделиться

5 ответов

У него лучшая перфомашина:

UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
    INSERT INTO Table1 VALUES (...)
12
ответ дан 5 December 2019 в 07:11
поделиться

Вы захотите сделать IF Сначала СУЩЕСТВУЕТ, чтобы проверить, существует ли запись в таблице. Если это не так, ВСТАВЬТЕ новую машину, иначе ОБНОВИТЕ существующую запись.

0
ответ дан 5 December 2019 в 07:11
поделиться

В SqlServer 2008 есть команда UPSERT, которая делает именно это. Я не пробовал.

7
ответ дан 5 December 2019 в 07:11
поделиться

возможно, что-то подобное с некоторыми изменениями будет работать

   IF EXISTS (SELECt * FORM carsdescriptions WHERE IDCar = @IDCar )
        UPDATE carsdescriptions 
        SET Header = @Header, Content = @Content
        WHERE IDCar = @IDCar
   ELSE
        INSERT INTO carsdescriptions (IDCar, Header, Content)
        VALUES (@IDCar, @Header, @Content)

Посмотрите и эту статью, она даст вам больше информации

5
ответ дан 5 December 2019 в 07:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: