Size: a a a

SqlCom.ru - уголок MS SQL

2021 July 03

АА

Андрей Агеев... in SqlCom.ru - уголок MS SQL
один очень толковый ит-управленец (лучший пожалуй с которым довелось работать) говорил так: я беру на работу тех, что создают правила, а плачу я больше тем, кто еще и умеет эти правила нарушать.
источник

I

ILYA in SqlCom.ru - уголок MS SQL
Если у вас там все задачи критичные и гвозди вы забиваете всем подряд то это плохой признак. А вообще мы обсуждали просто применение триггеров не обязательно для критичных задач, человек отвергал их в целом , причем ничем так это и не обосновал, кроме эмоций и личного негативного опыта.
источник

А

Артем in SqlCom.ru - уголок MS SQL
Так и ты не дал зачем оно нужно кроме аудита. Хоть один пример задачи, который триггером решался бы лучше, чем банальной процедурой
источник

АА

Андрей Агеев... in SqlCom.ru - уголок MS SQL
Ну почему же все - говорю же когда будет надо. Естественно если архитектор планово собирается забивать микроскопами это плохой признак и гнать его надо.
источник

АА

Андрей Агеев... in SqlCom.ru - уголок MS SQL
обеспечение целостности данных например, ограничения не всегда применимы.
источник

А

Артем in SqlCom.ru - уголок MS SQL
Триггер не обеспечивает целостность данных. Ссылочную разве что?
источник

АА

Андрей Агеев... in SqlCom.ru - уголок MS SQL
что значит не обеспечивает? триггер обеспечивает все, что в его функциональность придет в голову заложить.
источник

А

Артем in SqlCom.ru - уголок MS SQL
Если ты вешаешь триггер на инсерт, будет ли он одной атомарной операцией вместе с инсертом**?
источник

А

Артем in SqlCom.ru - уголок MS SQL
Если у тебя в заголовке процедуры стоит SET XACT_ABORT on, можешь выкинуть свои форен кеи. Ссылочная целостность будет обеспечена.
источник

А

Артем in SqlCom.ru - уголок MS SQL
Если ты не удаляешь строки, а маркируешь их (что правильно), то у тебя вообще не может быть такой ситуации, когда ссылка пробилась. Ты там случаем данные не удаляешь?
источник

Д

Денис Лёвкин... in SqlCom.ru - уголок MS SQL
Тригера очень полезная вещь. Не поспоришь, что некоторые неправильно их готовят😂
В существующих системах, именно когда нет возможности менять устоявшиеся правила, тригер вас просто спасет. Реальный случай: необходимо организовать партишион схему для одной из таблиц по составному индексу, одно из полей которого на данный момент не существует в этой таблице, но присутствует в связанной. Без инстид тригерра - не реализуется, доп нагрузка при  crud - естественно, зато абсолютный выйгрыш в других аспектах.
Хорошо когда можно вот так взять и перепроектировать структуру, разложить всё как надо и минимизировать использование тригерров, в противном случае без тригерров никуда, использовать надо правильно и как можно реже.
источник
2021 July 04

KT

Konstantin Taranov in SqlCom.ru - уголок MS SQL
тригеры полезны в 2 случаях - аудит и временный костыль как написано сообщением выше например, если не знать их особенности работы в каждой из баз данных (оказывается они еще по разному реализованы у каждого вендора сюрприз сюрприз) то советовать их использовать на крупных проектах - это к линчеванию в будущем. @Qwsaqu пытается донести через свой негативный опыт (а у тех кто разбирал большие базы активно вымазанные тригерами он только негативный) что использование тригеров это просто и удобно вначале, но в конце за такое те кто будет ваше поделие поддерживать или пытаться развивать сильно вам карму сольют и дождевой червь в следующем воплощении это еще можно сказать повезло.

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

здесь все в чате всегда всем новичкам советуют не использовать тригеры, если вы знаете как их готовить, то это хорошо, но не надо делать из них best practice и тем более решать ими какие-то бизнес задачи внутри базы данных.
источник

АА

Андрей Агеев... in SqlCom.ru - уголок MS SQL
для нечитателей с очень негативным жизненным опытом повторюсь
источник

MZ

Morgan Ziegler in SqlCom.ru - уголок MS SQL
Привет. Есть таблица с приходами и расходами. Каждая плюсовая строка формирует партию. Партии списываются расходами в порядке очереди (фифо). Может кто подскажет как красиво получить на определенную дату остаток по каждой партии?
источник

MZ

Morgan Ziegler in SqlCom.ru - уголок MS SQL
Как я вижу без пробежек по курсорам не обойтись?
источник

A

Alex in SqlCom.ru - уголок MS SQL
Не понял, зачем тут, вообще, курсор?
Почему просто не суммировать все приходы и расходы до интересующей даты?
источник

DG

Dimitri Grinkevich in SqlCom.ru - уголок MS SQL
красиво - оконные функции,
просто — подзапросы и группировки
источник

АР

Александр Ройтман... in SqlCom.ru - уголок MS SQL
Опять триггерный холивар 😊

Триггеры - всего лишь инструмент. Нужно а) понимать как он работает и б) когда можно/нельзя его использовать.
Триггерофобы обычно не могут похвастаться ни а), ни б)...

Могу лишь добавить, что категорически не рекомендуется использовать триггеры instead of update/delete.
Из-за разного поведения блокировок, в зависимости от TIL и уровня оптимизации инструкции, приведшей к срабатыванию такого триггера.
источник

R

Radist in SqlCom.ru - уголок MS SQL
Помимо журналирования, ещё одна вполне валидная причина применения триггеров - контроль целостности данных в тех случаях, когда это нельзя сделать констрейнтами. Написать правильно триггер в этом случае чуть сложнее (а, возможно, придётся писать не один), но отказ от него приводит либо к кривым данным (и дальнейшему разбирательству, как такие данные могли попасть в БД - внедренец напрямую в табличке завёл или софт глючит), либо к локальному усложнению схемы (когда, например, для создания fk тащат поля в таблицу, которые в ней не нужны, т.к. можно получить через соседнюю таблицу).
источник

А

Артем in SqlCom.ru - уголок MS SQL
Xact abort + crud решает проблему с констрейнтом. Если у тебя голые таблы наружу висят без процедур, ты скорее всего бекендер.
источник