|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
Firebird 3.0 На одной таблице есть триггер BEFORE DELETE, на второй - внешний ключ, ссылающийся на поле первой таблицы ON DELETE CASCADE. Вопрос: при удалении записи из первой таблицы, что сработает раньше - триггер или удаление записи из второй таблицы?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 23:58 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
alekcvp, Каскад. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 00:48 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
Конечно, триггер. Мишка шутит. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 12:39 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Конечно, триггер. Мишка шутит. Он может ошибаться по склерозу насчёт триггера, конечно, но при каскаде сначала выполняются удаления в ссылающихся на эту запись таблицах, это точно. Срабатывание BD триггера в этой таблице логично тоже ожидать после отработки каскада, но чем чёрт не шутит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 13:06 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
СПМ> Он может ошибаться по склерозу насчёт триггера, конечно Однозначно. СПМ> Срабатывание BD триггера в этой таблице логично СПМ> тоже ожидать после отработки каскада А как, по этой логике, ты бы триггером запрещал удаление? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 13:11 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
alekcvp На одной таблице есть триггер BEFORE DELETE, на второй - внешний ключ, ссылающийся на поле первой таблицы ON DELETE CASCADE. Вопрос: при удалении записи из первой таблицы, что сработает раньше - триггер или удаление записи из второй таблицы?.. 2. Если возникают подобные вопросы - время задуматься об правильности своего решения. Сложная логика на триггерах - зло. Бизнес-логика на триггерах - зло в квадрате. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 13:30 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
Сначала before trigger, потом запись реально удаляется, потом срабатывает каскад и before trigger подчинённой таблицы, потом удаляются записи этой таблицы, потом after trigger этой таблицы и в конце after trigger мастера. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 13:31 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
hvlad> Сложная логика на триггерах - зло. hvlad> Бизнес-логика на триггерах - зло в квадрате. + много Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 15:09 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Сначала before trigger, потом запись реально удаляется, потом срабатывает каскад и before trigger подчинённой таблицы, потом удаляются записи этой таблицы, потом after trigger этой таблицы и в конце after trigger мастера. Блин. Я же отчётливо помню холивары на эту тему. Не поленился проверить. Получилось ещё чудестраньше. Это полуторка, если что. В момент выполнения делета в случае каскада просто кладётся с прибором на ссылочную целостность. Один из китов, на которых стоит моё мировоззрение, потонул. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.11.2020, 16:01 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
hvlad Сложная логика на триггерах - зло. Бизнес-логика на триггерах - зло в квадрате. Ну я бы не сказал что у меня что-то сложное. Есть таблица с древовидной структурой, при создании или удалении записи обновляется некое поле родительской записи. Я просто хотел при удалении записи сделать флаг, который бы отключал вычисление этих значений для зависимых записей, которые тоже удаляются. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 01:25 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
alekcvp> Я просто хотел при удалении записи сделать флаг, alekcvp> который бы отключал вычисление этих значений alekcvp> для зависимых записей, которые тоже удаляются. Сделай это (проставление флага и удаление) в ХП, которую и вызывай. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 11:17 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
Ёкарный бабай. Я вспомнил. Во сне. И даже вспомнил почему так - чтобы не могли навтыкать новых ссылок пока удаляются старые.. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 15:22 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
СПМ> Ёкарный бабай. Я вспомнил. Во сне. А вот был бы помоложе - бабы снились бы, а не всякая фигня. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 15:36 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам СПМ> Ёкарный бабай. Я вспомнил. Во сне. А вот был бы помоложе - бабы снились бы, а не всякая фигня. Шёпотом, пока жена на кухне - знаешь, бабы тоже случаются ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:17 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Сделай это (проставление флага и удаление) в ХП, которую и вызывай. Не, я просто убрал ключ и сделал удаление в том же триггере. Чтобы если вдруг руками удалить что-то потребуется - не заморачиваться что там вызывать надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:34 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
05.11.2020 17:34, alekcvp пишет: > Не, я просто убрал ключ а вот это ты зря. каскады убрать, это да. но ключ не смей. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 17:39 |
|
Триггер и внешний ключ
|
|||
---|---|---|---|
#18+
Мимопроходящий 05.11.2020 17:34, alekcvp пишет: > Не, я просто убрал ключ а вот это ты зря. каскады убрать, это да. но ключ не смей. Почему?.. Ключ на ту же таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 18:04 |
|
|
start [/forum/topic.php?fid=40&fpage=11&tid=1560205]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 140ms |
0 / 0 |