У меня есть таблица с некоторыми столбцами.Для архивных целей я обычно создаю вторую таблицу, которая выглядит точно так же, но я добавляю дополнительные Primary Key
и Username/DateTime
.После каждого редактирования я вызываю процедуру, которая выглядит примерно так:
CREATE PROCEDURE [dbo].[sto_archiwizujPodmiot]
@varPodmiotID INT, @varUzytkownik NVARCHAR(50), @varUzytkownikData DATETIME
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
INSERT INTO [dbo].[PodmiotyHistoria]
([PodmiotID]
,[PodmiotOsobaNazwisko]
,[PodmiotOsobaImie]
,[PodmiotUzytkownik]
,[PodmiotUzytkownikData])
SELECT [PodmiotID]
,[PodmiotOsobaNazwisko]
,[PodmiotOsobaImie]
,@varUzytkownik
,@varUzytkownikData
FROM [dbo].[Podmioty]
WHERE [PodmiotID] = @varPodmiotID
END
Я создаю такую процедуру для каждой таблицы, для которой мне нужен архив.Например, если кто-то собирается изменить некоторые поля до того, как произойдет обновление, я вызываю эту процедуру.Проблема в том, что это немного трудоемко, чтобы создать это для каждой таблицы, немного, но все же.Есть ли способ сделать более обобщенную процедуру, которая позволила бы мне сделать то же самое, но я мог бы вызвать ее для каждой таблицы, просто задав такие параметры, как TableName
, ArchiveTableName
, Username
, DateTime
должен делать каждый раз?