Скопируйте Tuple ИЛИ сохраните Id of Tuple в другой таблице (ProductLogs), когда какое-либо поле обновляется в определенной таблице (продукты)

см. эту страницу, https://github.com/ninject/Ninject.Web.Common/wiki/Setting-up-an-IIS-hosted-web-application

, но я предлагаю вам выбрать другие фреймворки, такие как simpleinjector или autofac , которые лучше, чем ninject

на этой странице, http: // www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison

вы можете увидеть тесты широко используемых фреймворков для ioc, и вы можете найти лучшие рамки для вас

2
задан halfer 22 January 2019 в 22:21
поделиться

2 ответа

Как уже упоминалось в StepUp, классический способ сделать это - использовать AFTER TRIGGER. Пример решения будет запускаться только с UPDATE. В вашем случае вы также хотели бы добавить триггеры для INSERT и DELETE или адаптировать этот один триггер для обработки этих трех типов событий.

Обратите внимание, что использование триггера может повлиять на @@ ROWCOUNT, поэтому может повлиять на функциональность.

Из-за этого, я думаю, что последние версии SQL Server имеют альтернативные механизмы.

0
ответ дан Gert-Jan 22 January 2019 в 22:21
поделиться

Попробуйте использовать триггер после UPDATE:

    CREATE TRIGGER ModDate
    ON YourTable
    AFTER UPDATE
AS
BEGIN        
    INSERT INTO dbo.LogTable(DateModified)
    VALUES (GETDATE());
    PRINT 'New Block Date Added';
END 

ОБНОВЛЕНИЕ:

Когда триггер работает, под капотом есть две таблицы:

  • «ВСТАВЛЕНО»
  • «УДАЛЕНО»

Данные в этих виртуальных таблицах зависят от того, что вы делаете:

  • Операция вставки : при вставке записи виртуальная таблица «вставленная» содержит вновь вставленную запись, где виртуальная таблица «УДАЛЕНО» остается пустой
  • Операция обновления: при обновлении записи сначала старая запись будет помещаться в виртуальную таблицу «DELETED», а вновь обновленная запись удерживается виртуальной таблицей «INSERTED».

    Это означает, что вы можете получить старое значение из «DELETED» и текущее обновляемое значение через виртуальную таблицу «INSERTED». Вы можете запросить их как:

    -- To get the old record value
    SELECT * FROM DELETED
    
    -- To get the updated value
    SELECT * FROM INSERTED
    
  • Операция удаления: при попытке удалить какую-либо конкретную запись удаленная запись будет вставлена ​​в виртуальную таблицу «УДАЛЕНО».

    [118 ]

Итак, ваш триггер должен выглядеть так:

CREATE TRIGGER ModDate
    ON YourTable
    AFTER UPDATE
AS
BEGIN        
    INSERT INTO dbo.LogTable(DateModified, IdUpdatedRow)
    SELECT GETDATE(), INSERTED.YourIdOfUpdatedRow;
    PRINT 'New Block Date Added';
END 
0
ответ дан StepUp 22 January 2019 в 22:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: