#c# #asp.net #sql #sql-server-2008
#c# #asp.net #sql #sql-server-2008
Вопрос:
У меня есть 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
Пользователь может обновлять данные следующим образом:
- если target.foreignkey = source.foreignkey И target.model = source.model, то ничего не делайте
- если (foreignkey, model) в цели не существует в источнике, удалите строку
- если (foreignkey, model) в источнике не существует в цели, вставьте его
Пока у меня есть это:
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. Вероятно, было бы очень полезно, если бы поля вашей таблицы соответствовали вашему sql. Является ли Lom_problem PK или Lom_number?
2. @conrad очень сожалею! спасибо, что отметили это. lom_number — FK
3. @ConradFrix ты там, мой друг. пожалуйста
Ответ №1:
первая проблема вы сказали, что ничего не делаете правильно?
попробуй это
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)
но я не совсем уверен, что это сработает, потому что я еще не протестирован