Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
antox
Member

Откуда: РФ
Сообщений: 968
Необходимо, что бы при удалении из таблицы t1, данные из некоторых столбцов удаляемых записей пополняли таблицу t2

Как это лучше реализовать на стороне БД, без участия приложения ?
29 мар 19, 06:52    [21846728]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25196
antox
Как это лучше реализовать на стороне БД, без участия приложения ?

IBExpert умеет создавать такие скрипты.
29 мар 19, 08:07    [21846741]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25196
http://www.ibexpert.net/ibe/index.php?n=Doc.LogManager
29 мар 19, 08:12    [21846742]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8253
trigger after delete
29 мар 19, 08:34    [21846752]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
antox
Member

Откуда: РФ
Сообщений: 968
Спасибо
29 мар 19, 17:34    [21847418]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
MaratIsk
Member

Откуда: Astana, Kazakhstan
Сообщений: 2464
Ivan_Pisarevsky
trigger after delete

after или before?
29 мар 19, 19:10    [21847539]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8253
Я ж вроде бы однозначасно написал after, традиция однако, в саму запись пишем до, в остальные таблицы после.
29 мар 19, 19:17    [21847546]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
MaratIsk
Member

Откуда: Astana, Kazakhstan
Сообщений: 2464
Ivan_Pisarevsky
Я ж вроде бы однозначасно написал after, традиция однако, в саму запись пишем до, в остальные таблицы после.

т.е. after и before в данном случае равнозначны?
29 мар 19, 19:43    [21847556]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27915
antox,

я поясню. Триггеры before выполняются ДО действия, триггеры after - ПОСЛЕ.
Если запись надо "переместить", то делать надо это в after delete, потому что before или во время самого delete может что-то случиться, в результате вставку записи из before delete (если она там) серверу придется отменять. А зачем делать лишнюю работу?
Так что, before delete обычно используется для проверок перед удалением, типа, вызвать exception, если что не так.
29 мар 19, 19:45    [21847557]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
MaratIsk
Member

Откуда: Astana, Kazakhstan
Сообщений: 2464
kdv
antox,

я поясню. Триггеры before выполняются ДО действия, триггеры after - ПОСЛЕ.
Если запись надо "переместить", то делать надо это в after delete, потому что before или во время самого delete может что-то случиться, в результате вставку записи из before delete (если она там) серверу придется отменять. А зачем делать лишнюю работу?
Так что, before delete обычно используется для проверок перед удалением, типа, вызвать exception, если что не так.


имею ввиду ситуацию, когда необходимо сохранить старые значения куда-нибудь в лог перед удалением
OLD VALUES будут доступны при AFTER ?
29 мар 19, 20:21    [21847574]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 27915
MaratIsk,

интересно, а почему они не будут доступны? Что тогда в after delete делать-то?
29 мар 19, 20:37    [21847583]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
antox
Member

Откуда: РФ
Сообщений: 968
Как я успел понять, именно after, хотя логичнее было бы ON )
30 мар 19, 08:19    [21847691]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как можно реализовать пополнение одной таблицы, при удалении записей из другой  [new]
MaratIsk
Member

Откуда: Astana, Kazakhstan
Сообщений: 2464
kdv
MaratIsk,

интересно, а почему они не будут доступны? Что тогда в after delete делать-то?

действительно работает
30 мар 19, 08:37    [21847697]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить