Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер, не позволяющий обновить больше n-строк / 25 сообщений из 38, страница 1 из 2
11.08.2016, 15:57:27
    #39290420
gospodin_vasyaa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
Добрый день,
Есть потребность обезопасить одну важную таблицу от глобальных апдейтов, каждый отдельный апдейт должен быть не более 3 строк.
Как должен выглядеть триггер под эту задачу?
Большое спасибо!
...
Рейтинг: 0 / 0
11.08.2016, 16:01:19
    #39290424
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
gospodin_vasyaa,

ну делаешь временную табличку on commit delete rows. В ней счетчик.
По update before each row. Увеличиваешь счетчик. Вышел за границы разумного - дели на 0. :)
...
Рейтинг: 0 / 0
11.08.2016, 16:07:57
    #39290434
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
gospodin_vasyaa,

Студент?
...
Рейтинг: 0 / 0
11.08.2016, 16:15:51
    #39290442
gospodin_vasyaa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
Сергей Арсеньев,
Если честно я не понял:
1) вне триггера создаем GLOBAL TEMPORARY TABLE
2) какой счетчик надо создать для этой таблицы?
3) как выгружать туда запрос по которому сработал триггер?
4) как не разрешать выполнить действие в теле триггера?
...
Рейтинг: 0 / 0
11.08.2016, 16:15:57
    #39290443
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
Сергей Арсеньевну делаешь временную табличку on commit delete rows. В ней счетчик.
По update before each row. Увеличиваешь счетчик. Вышел за границы разумного - дели на 0. :)Это вы так шутите?
Нафиг создавать таблички, если можно обойтись COMPOUND-триггером?
...
Рейтинг: 0 / 0
11.08.2016, 16:16:27
    #39290444
gospodin_vasyaa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
AlexFF__|,
Нет, начинающий PL/SQL разработчик
...
Рейтинг: 0 / 0
11.08.2016, 16:19:01
    #39290450
test__user
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
gospodin_vasyaa,

sql%rowcount > 3
rollback
?
...
Рейтинг: 0 / 0
11.08.2016, 16:19:12
    #39290451
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
gospodin_vasyaaAlexFF__|,
Нет, начинающий PL/SQL разработчик
Ну так учись описывать свои замыслы правильно.
2 быстрых update по 2 строки считаются update 4 строк? А 100 по 1 строке?
Какую цель в итоге хочешь достичь?
...
Рейтинг: 0 / 0
11.08.2016, 16:19:17
    #39290452
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
gospodin_vasyaaНет, начинающий PL/SQL разработчик

Тогда в ON EACH ROW триггере делай SELECT из этой самой таблицы. Гарантировано ограничение
в одну изменённою запись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.08.2016, 16:28:49
    #39290465
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
gospodin_vasyaaДобрый день,
Есть потребность обезопасить одну важную таблицу от глобальных апдейтов, каждый отдельный апдейт должен быть не более 3 строк.
Как должен выглядеть триггер под эту задачу?
Большое спасибо!
для начала, раскройте тайну
апдейт не больше 3-х строк,
а мерж? (можно и и по ветвям - типа, "не больше ляля в when matched кляузе"
хотя и это баян

ну и постановщику этой дичины пламенный привет
...
Рейтинг: 0 / 0
11.08.2016, 16:31:11
    #39290473
gospodin_vasyaa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
AlexFF__|,
Цель: не позволять работникам за один запрос апдейтить сразу много строк ( часто забывают условия where).
Если они подряд делают 100 апдейтов по одной строке, то пожалуйста. Еще раз: именно за раз не должно позволять обновлять много строк.
...
Рейтинг: 0 / 0
11.08.2016, 16:36:27
    #39290479
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
gospodin_vasyaaДобрый день,
Есть потребность обезопасить одну важную таблицу от глобальных апдейтов, каждый отдельный апдейт должен быть не более 3 строк.
Как должен выглядеть триггер под эту задачу?
Большое спасибо!

1) в before statment счетчік устанавливаете в 0
2) в after for each rows увеличиваете на 1
3) в after statment проверяете если счетчик больше 3-х срыв




зы
проще делать в компаунд триггере, но я их (компаунд тріггеров) боюсь из-за merge

.....
stax
...
Рейтинг: 0 / 0
11.08.2016, 16:37:29
    #39290480
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
gospodin_vasyaaAlexFF__|,
Цель: не позволять работникам за один запрос апдейтить сразу много строк ( часто забывают условия where)
Феерично )
Может тебе сделать процедуру для update/delete/insert таблицы, чтобы dml операции шли через нее?
И пусть "работники" пользуются ею.
Там сможешь реализовать и эту и остальные свои смелые фантазии по мере поступления.
...
Рейтинг: 0 / 0
11.08.2016, 16:46:19
    #39290489
gospodin_vasyaa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
stax..,
Мне кажется ваша реализация наиболее подходит, попробую реализовать, спасибо!
...
Рейтинг: 0 / 0
11.08.2016, 17:06:08
    #39290501
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
stax..я компаунд тріггеров боюсь из-за mergeможно подумать, обычные (не COMPOUND) вас спасут от этого
...
Рейтинг: 0 / 0
11.08.2016, 17:09:06
    #39290503
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
stax..но я их (компаунд тріггеров) боюсь из-за mergeА на чём основан страх?
...
Рейтинг: 0 / 0
11.08.2016, 17:17:25
    #39290509
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
Elicstax..но я их (компаунд тріггеров) боюсь из-за mergeА на чём основан страх?
не понимаю как оно работает
выкладывал сдесь тест и вопросы по нему

.....
stax
...
Рейтинг: 0 / 0
11.08.2016, 17:25:14
    #39290514
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
--Eugene--Это вы так шутите?
Нафиг создавать таблички, если можно обойтись COMPOUND-триггером?
1. Да.
2. Нафиг компаунд, когда можно через временную табличку? :)

Собственно компаунд это хорошо, пока нет merge, ну и если надо действительно действия на одну операцию. Табличка на транзакцию.
Собственно для понимая не важно.


Студент. Временная табличка (или переменная в компаунде) и есть счетчик. Собственно увеличиваем значение. Ну и про то, как не дать - я же сказал раздели на ноль. :)
...
Рейтинг: 0 / 0
11.08.2016, 17:27:30
    #39290516
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
ElicА на чём основан страх?
На том, что их два в одном. И причем третий вообще вызовется не инициализированным. :)
И главное это фича. :)
...
Рейтинг: 0 / 0
11.08.2016, 17:37:45
    #39290523
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
--Eugene--stax..я компаунд тріггеров боюсь из-за mergeможно подумать, обычные (не COMPOUND) вас спасут от этого
не спасут, а спасают

.....
stax
...
Рейтинг: 0 / 0
11.08.2016, 18:12:36
    #39290538
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
stax..--Eugene--пропущено...
можно подумать, обычные (не COMPOUND) вас спасут от этого
не спасут, а спасают

.....
staxвозможно, с тех пор прошло немало времени, но всёже
...
Рейтинг: 0 / 0
11.08.2016, 18:29:39
    #39290546
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
gospodin_vasyaaЦель: не позволять работникам за один запрос апдейтить сразу много строк ( часто забывают условия where).Если на прод пускают разработчика, за которого нужно бояться, то нужны не триггера, а транквилизаторы. Сделай себе песочницу и ковыряйся в ней.
...
Рейтинг: 0 / 0
11.08.2016, 22:25:12
    #39290654
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
Жаба тоадская тоже надоела
Только напишешь delete или update без where, сразу подчеркивает красной линией
Какое ей собачье дело, почему я where не написал или dual не приджойнил?
...
Рейтинг: 0 / 0
11.08.2016, 22:34:05
    #39290655
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
...
Рейтинг: 0 / 0
12.08.2016, 12:53:56
    #39291000
gospodin_vasyaa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер, не позволяющий обновить больше n-строк
Сергей Арсеньев,
Спасибо, получилось вот так:


CREATE OR REPLACE TRIGGER tab1_str_upd
BEFORE UPDATE
ON tab1
FOR EACH ROW
declare
var1 number(2);
begin
insert into temp_table_in_sub (id) values ( 1);
select count(*) into var1 from temp_table_in_sub;
IF var1>5 THEN
raise_application_error( -20001, 'Нельзя одновременно обновлять столько строк!');
END IF;
END;
/
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер, не позволяющий обновить больше n-строк / 25 сообщений из 38, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]