0 / 0 / 0
Регистрация: 08.03.2015
Сообщений: 12
|
||||||
1 | ||||||
Мутация триггера запрещающего изменять данные27.05.2016, 20:29. Показов 2002. Ответов 9
Метки нет (Все метки)
Нужна помощь с триггером, он должен запрещать изменять дату формирования заказа и кол-во заказанных книг, если заказ не выполнен, а если заказ выполнен, то ничего менять нельзя.
Мне еще нужно вытащить из дата_отправ sysdate только по году, а не как сейчас со всей датой. Данный код компилится, но происходит мутация ТАБЛИЦЫ, (неправильно написал заголовок) при изменении поля дата_заказа: error ORA-04091: table ДЕТАЛИ_ПРОДАЖ is mutating, trigger/function may not see it ORA-06512: at "BEFOREUPDATEDETALIPRODAZH", line 5 ORA-04088: error during execution of trigger 'BEFOREUPDATEDETALIPRODAZH' Триггер:
Соответственно, вопрос, как исключить эту мутацию, что и как нужно сделать? Желательно с подробным объяснением.
0
|
27.05.2016, 20:29 | |
Ответы с готовыми решениями:
9
Почему не вставляются данные в таблицу после срабатывания триггера не получается изменять данные в базе Не могу изменять данные в ODBC Как хранить и изменять данные в WP 8.1 |
476 / 239 / 114
Регистрация: 12.05.2016
Сообщений: 647
|
||||||
27.05.2016, 21:03 | 2 | |||||
Сообщение было отмечено Dubfire752 как решение
Решение
Зачем тут апдейт ?? Просто меняйте значение :NEW.Дата_Отпр и оно запишется в таблицу вместо того, что пришло в триггер. Для этого триггеры и нужны.
1
|
0 / 0 / 0
Регистрация: 08.03.2015
Сообщений: 12
|
|
27.05.2016, 21:16 [ТС] | 3 |
Спасибо большое, а можете ли сделать чтобы для даты_отпр sysdate считывался только по году? а потом уже к полной дате прибавлялся 1 день.
0
|
476 / 239 / 114
Регистрация: 12.05.2016
Сообщений: 647
|
|
27.05.2016, 22:35 | 4 |
0
|
0 / 0 / 0
Регистрация: 08.03.2015
Сообщений: 12
|
|
28.05.2016, 10:59 [ТС] | 5 |
примерно как-то так: to_char(sysdate,'yyyy') или через extract(year from sysdate), только незнаю как правильно это в триггере написать в IF.
0
|
763 / 664 / 194
Регистрация: 24.11.2015
Сообщений: 2,158
|
|
28.05.2016, 20:13 | 6 |
0
|
0 / 0 / 0
Регистрация: 08.03.2015
Сообщений: 12
|
||||||
29.05.2016, 14:35 [ТС] | 7 | |||||
Переделал код, даже оставил sysdate без изменений.
Что делать?
0
|
476 / 239 / 114
Регистрация: 12.05.2016
Сообщений: 647
|
|
29.05.2016, 21:21 | 8 |
У вас выдает ошибку совсем другой триггер с другим названием.
А не тот, который вы тут привели. Почитайте внимательно сообщение. Естественно "заглянуть" к вам в другой триггер сами мы не в состоянии. Все телепаты в отпуске.
0
|
0 / 0 / 0
Регистрация: 08.03.2015
Сообщений: 12
|
||||||
29.05.2016, 22:32 [ТС] | 9 | |||||
я дропнул тот триггер, просто мне говорили мутацию исправить можно только создав другой триггер, с глобальной переменной, как то так, а так вроде все работает, но мне нужно было брать в условии не всю дату, а только год, к примеру так:
0
|
476 / 239 / 114
Регистрация: 12.05.2016
Сообщений: 647
|
||||||
29.05.2016, 23:10 | 10 | |||||
Год сравнить можно так:
Вот бумажку возьмите и прям ручкой напишите: "Я хочу чтобы для всех заказов, у которых дата отправления такая-то, происходило то-то" А уже потом пробуйте эти русские фразы воплощать в коде. А то нахреначат условий, потом сами не могут объяснить зачем. Глядя на ваш код: Вы правда хотите для всех заказов, у которых дата отправления пустая или попадает в текущий год, исправить её на "завтра" ?? Но тогда у вас второе условие (ELSIF) вообще никогда не сработает (вернее сработает только если попробовать на ПРОШЛЫЙ год поменять дату отправления ...
1
|
29.05.2016, 23:10 | |
29.05.2016, 23:10 | |
Помогаю со студенческими работами здесь
10
Как изменять данные, отображаемые в Chart? Запретить пользователю изменять данные в файле Как периодически изменять данные в таблице? Как изменять данные во внешних базах ? Можно ли на печатной форме изменять данные? Как изменять данные в array.map? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |