Вставить или обновить, если запись находится в таблице - PullRequest
8 голосов
/ 02 марта 2010

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

машины: IDCar (инт, ПК, автоинкремент) carsDesciptions (IDDescription, Заголовок (NVARCHAR), содержание (NVARCHAR), idCar (интермедиат, FK)

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

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

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

У меня есть ID автомобиля, и у меня есть ID описания

Класс CarDescirption не имеет пула, подобного IsChanged, поэтому

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

  1. удалить из описания машин, где idcar = @ idcar
  2. вставить в cardescription (, @ Header, @ Content, @ IDCar)

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

Ответы [ 5 ]

12 голосов
/ 02 марта 2010

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

UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
    INSERT INTO Table1 VALUES (...)
7 голосов
/ 02 марта 2010

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

5 голосов
/ 02 марта 2010

вероятно что-то похожее с какой-то модификацией будет работать

   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)

Посмотрите и эту статью, она даст вам более глубокое понимание

0 голосов
/ 02 марта 2010

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

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