2016-01-13 5 views
1

Я использую SQL Server 2014 Management Studio. Я добавляю функцию удаления в своем приложении, которая удалит строку из Таблицы 1. Сначала он вставляет эту строку в таблицу2, а затем удаляет ее из Таблицы 1.Автоматическая синхронизация одной таблицы с другой таблицей (столбцы)

Чтобы получить дублирование столбцов table1 для Table2, я мог бы сделать это:

SELECT * INTO Table2 FROM Table1 

Однако, есть способ, чтобы Table2 автоматически получить все столбцы из Table1 на постоянной основе? Причина, по которой я спрашиваю, заключается в том, что в таблице 1 будут добавлены разные столбцы в будущем, поэтому необходимость вручную дублировать ее в Таблице 2 будет раздражать. Благодаря!

+1

Вам нужен триггер для этого, проверьте этот http://stackoverflow.com/questions/9996643/sql-server-on-delete-trigger, конечно, вам, вероятно, придется немного модифицировать код, но это это решение для вашей проблемы – Veljko89

ответ

4

Есть несколько способов сделать это:

  • Вы можете использовать триггер, который будет ловить DELETE операции
  • Вы можете изменить вам DELETE заявление использовать OUTPUT

Это было выглядят следующим образом:

DELETE T1 
OUTPUT DELETED.* INTO Table2 
FROM Table1 AS T1; 

Итак, всякий раз, когда вы удаляете что-то от Table1, эти записи будут добавлены к Table2.

Если Table2 должна быть таблица архив, он может иметь ArchiveDate столбец, поэтому то ваше заявление может быть потенциально улучшена и выглядеть следующим образом:

DELETE T1 
OUTPUT DELETED.*, CURRENT_TIMESTAMP INTO Table2 
FROM Table1 AS T1; 

Конечно, я бы не рекомендовал использовать * в ваши SQL-запросы и тщательно перечислите свои столбцы:

DELETE T1 
OUTPUT DELETED.Column1, DELETED.Column2, DELETED.Column3, DELETED.Column4, CURRENT_TIMESTAMP 
INTO Table2 (Column1, Column2, Column3, Column4, ArchiveDate) 
FROM Table1 AS T1; 

Таким образом, вы сможете узнать, когда эта конкретная запись была удалена.

+0

То есть один отличный человек, не знал, что это возможно – Veljko89

+0

@ Veljko89 Теперь вы делаете! :) –

+0

Спасибо! Я попробую. – RockOn

Смежные вопросы