Вставить, если не существует, но удалить, если он существует - PullRequest
3 голосов
/ 05 февраля 2011

У меня есть следующий запрос для обновления записи таблицы, устанавливающей новый foreignKey, если это foreignKey и foreignKey2 еще не существует.Однако это должно прекрасно работать, как я могу изменить удаление этой конкретной записи pkID, если она существует?

структура таблицы:

+----------------+
| table          |
+----------------+
| pkID           |
| foreignKey     |
| foreignKey2    |
+----------------+

запрос:

UPDATE table a
SET a.foreignKey = 2
WHERE a.pkID = 1234
AND NOT EXISTS (
   SELECT 1
   FROM   table b
   WHERE  b.foreignKey = 2
   AND  b.foreignKey2 = a.foreignKey2
)

Ответы [ 2 ]

4 голосов
/ 05 февраля 2011

Вы можете удалить, если он существует, и только вставить (вместо обновления, поскольку запись не существует, чтобы удалить) в противном случаеНо не ясно, каким должно быть 3-е значение.

DELETE tbl where pkID = 1234;
if @@ROWCOUNT = 0
    INSERT tbl(foreignKey, pkID, foreignKey2)
    VALUES (2, 1234, ??)
0 голосов
/ 05 февраля 2011

Вам нужно MERGE. Взгляните здесь (есть пример с той же задачей)

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