Триггер базы данных или распространенный метод в коде? - PullRequest
2 голосов
/ 18 августа 2010

У меня есть таблица, в которую я хочу записывать действия какой-либо части моего приложения.Запись будет вставлена ​​(может быть обновлена ​​в будущем) в эту таблицу, когда запись будет вставлена ​​/ обновлена ​​в другой таблице.

Например,

  • Если запись вставлена ​​в таблицу заказов, записьбудет вставлен в таблицу журнала.
  • Если запись добавлена ​​в таблицу бронирования, запись будет вставлена ​​в таблицу журнала.
  • если запись обновлена ​​в таблице клиентов, запись будет вставлена ​​в таблицу журнала.если в таблице журнала нет записи для этого клиента.

и т. д.

Следует ли использовать триггеры для этих таблиц для добавления записей в таблицу журнала или использовать общий методв моем коде и вызывать этот метод всякий раз, когда происходит операция вставки / обновления?

Я должен выполнить эту операцию в некоторых частях моих приложений, чтобы было более 20 таблиц, в которые я буду добавлять триггер или из парыиз разных мест, откуда я буду вызывать метод.

Я использую SQL Server 2005 и C #

Что лучше, триггер или метод A?

Ответы [ 4 ]

4 голосов
/ 18 августа 2010

Метод лучше, чем триггер.Триггеры, как правило, - с большой производительностью - менее заметны в коде, т. Е. Скрыты - труднее отлаживать и поддерживать.- Ограничения на значения, передаваемые в таблицу журнала

Метод даст вам множество преимуществ с точки зрения оптимизации кода, расширения логики и упрощения поддержки

2 голосов
/ 18 августа 2010

Поскольку это кажется важной задачей, я бы использовал триггеры внутри СУБД, чтобы гарантировать, что не только ваше приложение вызывает создание журналов.

1 голос
/ 18 августа 2010

Если кто-то может обновить базу данных без вашего приложения с помощью TOAD, SSMS, Query Ananlyzer и т. Д., Триггер будет лучше

0 голосов
/ 18 апреля 2019

никогда не поздно для таких вопросов,
В общем, триггеры сокращают круговую передачу вашей БД и кода,
в вашем случае, чтобы сделать это в C #, вам потребуется 2 поездки для каждого действия, одна для действия (Вставка) и одна для действия журнала, и, конечно, вам нужно много обработать исключения в вашем коде, так что запись не вставлена, вы обрабатываете это, а также вы регистрируете другое действие сбоя
в качестве триггера вы отправляете данные один раз на сервер, и все действия и обработка выполняются без дополнительных подключений
это особенно полезно сейчас, когда каждая вещь является общей, а количество подключений ограничено.

...