|
|
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
Добрый день, Есть потребность обезопасить одну важную таблицу от глобальных апдейтов, каждый отдельный апдейт должен быть не более 3 строк. Как должен выглядеть триггер под эту задачу? Большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 15:57:27 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
gospodin_vasyaa, ну делаешь временную табличку on commit delete rows. В ней счетчик. По update before each row. Увеличиваешь счетчик. Вышел за границы разумного - дели на 0. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:01:19 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
gospodin_vasyaa, Студент? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:07:57 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, Если честно я не понял: 1) вне триггера создаем GLOBAL TEMPORARY TABLE 2) какой счетчик надо создать для этой таблицы? 3) как выгружать туда запрос по которому сработал триггер? 4) как не разрешать выполнить действие в теле триггера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:15:51 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньевну делаешь временную табличку on commit delete rows. В ней счетчик. По update before each row. Увеличиваешь счетчик. Вышел за границы разумного - дели на 0. :)Это вы так шутите? Нафиг создавать таблички, если можно обойтись COMPOUND-триггером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:15:57 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
AlexFF__|, Нет, начинающий PL/SQL разработчик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:16:27 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
gospodin_vasyaa, sql%rowcount > 3 rollback ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:19:01 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
gospodin_vasyaaAlexFF__|, Нет, начинающий PL/SQL разработчик Ну так учись описывать свои замыслы правильно. 2 быстрых update по 2 строки считаются update 4 строк? А 100 по 1 строке? Какую цель в итоге хочешь достичь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:19:12 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
gospodin_vasyaaНет, начинающий PL/SQL разработчик Тогда в ON EACH ROW триггере делай SELECT из этой самой таблицы. Гарантировано ограничение в одну изменённою запись. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:19:17 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
gospodin_vasyaaДобрый день, Есть потребность обезопасить одну важную таблицу от глобальных апдейтов, каждый отдельный апдейт должен быть не более 3 строк. Как должен выглядеть триггер под эту задачу? Большое спасибо! для начала, раскройте тайну апдейт не больше 3-х строк, а мерж? (можно и и по ветвям - типа, "не больше ляля в when matched кляузе" хотя и это баян ну и постановщику этой дичины пламенный привет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:28:49 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
AlexFF__|, Цель: не позволять работникам за один запрос апдейтить сразу много строк ( часто забывают условия where). Если они подряд делают 100 апдейтов по одной строке, то пожалуйста. Еще раз: именно за раз не должно позволять обновлять много строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:31:11 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
gospodin_vasyaaДобрый день, Есть потребность обезопасить одну важную таблицу от глобальных апдейтов, каждый отдельный апдейт должен быть не более 3 строк. Как должен выглядеть триггер под эту задачу? Большое спасибо! 1) в before statment счетчік устанавливаете в 0 2) в after for each rows увеличиваете на 1 3) в after statment проверяете если счетчик больше 3-х срыв зы проще делать в компаунд триггере, но я их (компаунд тріггеров) боюсь из-за merge ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:36:27 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
gospodin_vasyaaAlexFF__|, Цель: не позволять работникам за один запрос апдейтить сразу много строк ( часто забывают условия where) Феерично ) Может тебе сделать процедуру для update/delete/insert таблицы, чтобы dml операции шли через нее? И пусть "работники" пользуются ею. Там сможешь реализовать и эту и остальные свои смелые фантазии по мере поступления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:37:29 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
stax.., Мне кажется ваша реализация наиболее подходит, попробую реализовать, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 16:46:19 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
stax..я компаунд тріггеров боюсь из-за mergeможно подумать, обычные (не COMPOUND) вас спасут от этого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 17:06:08 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
stax..но я их (компаунд тріггеров) боюсь из-за mergeА на чём основан страх? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 17:09:06 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
Elicstax..но я их (компаунд тріггеров) боюсь из-за mergeА на чём основан страх? не понимаю как оно работает выкладывал сдесь тест и вопросы по нему ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 17:17:25 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
--Eugene--Это вы так шутите? Нафиг создавать таблички, если можно обойтись COMPOUND-триггером? 1. Да. 2. Нафиг компаунд, когда можно через временную табличку? :) Собственно компаунд это хорошо, пока нет merge, ну и если надо действительно действия на одну операцию. Табличка на транзакцию. Собственно для понимая не важно. Студент. Временная табличка (или переменная в компаунде) и есть счетчик. Собственно увеличиваем значение. Ну и про то, как не дать - я же сказал раздели на ноль. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 17:25:14 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
ElicА на чём основан страх? На том, что их два в одном. И причем третий вообще вызовется не инициализированным. :) И главное это фича. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 17:27:30 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
--Eugene--stax..я компаунд тріггеров боюсь из-за mergeможно подумать, обычные (не COMPOUND) вас спасут от этого не спасут, а спасают ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 17:37:45 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
stax..--Eugene--пропущено... можно подумать, обычные (не COMPOUND) вас спасут от этого не спасут, а спасают ..... staxвозможно, с тех пор прошло немало времени, но всёже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 18:12:36 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
gospodin_vasyaaЦель: не позволять работникам за один запрос апдейтить сразу много строк ( часто забывают условия where).Если на прод пускают разработчика, за которого нужно бояться, то нужны не триггера, а транквилизаторы. Сделай себе песочницу и ковыряйся в ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 18:29:39 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
Жаба тоадская тоже надоела Только напишешь delete или update без where, сразу подчеркивает красной линией Какое ей собачье дело, почему я where не написал или dual не приджойнил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 22:25:12 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2016, 22:34:05 |
|
||
|
Триггер, не позволяющий обновить больше n-строк
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, Спасибо, получилось вот так: 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; / ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 12:53:56 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39290509&tid=1887671]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
279ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 178ms |
| total: | 523ms |

| 0 / 0 |
