Вставка и удаление несовпадающих записей - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть веб-приложение asp.net, где пользователь может обновить таблицу в базе данных.

У меня есть таблица, которая выглядит так в SQL Server 2008:

lom_number(fk) problem   primarykey
1            AA       1
1            AA1      2
1            AA3      3
23           B        4
22           C        5

Пользователь имеет интерфейс и может вносить изменения в эти данные на основе foreignkey

Пользователь может обновлять данные следующим образом:

  1. если target.foreignkey = source.foreignkey AND target.model = source.model, то ничего не делать
  2. если (внешний ключ, модель) в целевом объекте не существует в источнике, то удалить строку
  3. если (внешний ключ, модель) в источнике не существует в цели, вставьте его

Пока у меня есть это:

create procedure Merge_lom_problem
as
merge [dbo].lom_problem as target
using temp.lom_problem as SOURCE
on (target.lom_number = SOURCE.lom_number)
when matched and (target.problem <> SOURCE.problem)
insert (lom_number,problem) values (SOURCE.lom_number,SOURCE.problem)
when matched and 

Но у меня проблемы с № 2 и № 3.

Не могли бы вы помочь, чтобы закодировать его?

1 Ответ

0 голосов
/ 19 марта 2012

первая проблема, которую вы сказали, ничего не делать правильно?

попробуйте это

create procedure Merge_lom_problem
as
merge [dbo].lom_problem as target
using temp.lom_problem as SOURCE
on (target.lom_number = SOURCE.lom_number)
--when matched and target.problem = SOURCE.problem then

when not matched by source then
DELETE

when not matched by target then
insert (lom_number,problem) values (SOURCE.lom_number,SOURCE.problem)

, но я не совсем уверен, что это будет работать, потому что я еще не тестировался

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