У меня проблема с триггером на оракуле.oracle sql trigger loop update и delete
У меня есть что-то вроде этого:
Project
-------
currentProgress
plannedLoads
currentLoads
Step
----
currentProgress
plannedLoads
currentLoads
Task
----
currentProgress
plannedLoads
currentLoads
Проект состоит за шагом и шаг состоит Task.
currentProgress всегда = currentLoads/expectedLoads.
У меня есть триггер перед вставкой в Task, чтобы улучшить Step currentLoads при вставке, обновлении или удалении, а также один из них на Step currentLoads для улучшения Project currentLoads.
Так вызывается два триггера, если я обновляю Task, один для обновления Step, а затем один для Project.
Когда я обновляю Шаг, например, обновляю currentLoad.
Проблема заключается в том, когда я удаляю проект. Я должен удалить также шаги и задачи, связанные с. Таким образом вызывается триггеры по задаче и шагу при удалении, напомнив одно из них в проекте.
Я не уверен, что я прост. Спросите меня, если нет.
Благодарим за помощь.
Почему триггеры лучше использовать для проверки? Вот для чего нужны ограничения. Триггер лучше всего использовать для изменения данных при выполнении DML в таблице или для сохранения других таблиц, обновленных после первого. – Ben
Триггеры с логикой приложения в основном скрыты. Вы должны приложить дополнительные усилия, чтобы обеспечить их огонь в желательном порядке, и вы несете дополнительную стоимость переключения контекста для триггеров каждой строки. Ограничения - это гарантия обеспечения целостности данных, триггеры могут дать вам дополнительную мощность. Если все, что вы хотите сделать, это удалить строки из одной таблицы, когда обновления сделаны в другую, безусловно, процедура является самым чистым и наиболее удобным для этого способом. – Ben
Я не оспариваю ваше предложение о процедуре! Просто ваша формулировка первого предложения. Триггеры замаскируют, что вы не делаете DML правильно, они не проверяют данные, для чего используются ограничения. Если вы подтвердите правильность в триггере, в какой-то момент что-то обязательно будет ошибочным. – Ben