#c# #asp.net #sql #sql-server-2008
#c# #asp.net #sql #sql-server-2008
Вопрос:
У меня есть asp.net веб-приложение, в котором пользователь может обновлять таблицу в базе данных. Я хотел бы знать, как правильно это сделать. Как вы можете видеть на изображении ниже, красная заштрихованная область — это общие данные, которые мне не нужно обновлять.
Вот шаги, которые мне нужно предпринять:
- Не обновляйте данные, если они существуют
- Удаление данных, которых нет в пользовательском обновлении
- Добавьте данные из пользовательского обновления, которых еще нет в таблице
Мне также нужно провести аудит этой таблицы, поэтому у меня будет триггер для нее. Я хотел бы теоретически знать, каков наилучший способ выполнить такое обновление таблицы?
спасибо Аарону, который представил концепцию слияния.
Вот как выглядят данные таблицы:
foreignkey model primarykey
1 AA 1
1 AA1 2
1 AA3 3
23 B 4
22 C 5
Пользователь будет добавлять данные, которые выглядят следующим образом:
foreignkey model primarykey
1 A1 1
1 AA1 2
1 AA3 3
22 C 5
Как вы можете видеть, первая строка была обновлена, а предпоследняя строка была полностью удалена. Не могли бы вы помочь мне с этим заявлением о слиянии?
Комментарии:
1. кто-нибудь еще хочет попробовать это?
Ответ №1:
Да, это возможно, и это называется слиянием. См. Документацию для инструкции SQL Server MERGE .
Если вы не хотите выполнять какие-либо обновления, если данные уже существуют, просто не добавляйте WHEN MATCHED
предложение. ИСПОЛЬЗУЙТЕ WHEN NOT MATCHED BY SOURCE
и WHEN NOT MATCHED BY TARGET
для вставки / удаления отсутствующих / удаленных строк.