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

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

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

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

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

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

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




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

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

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

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


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

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

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


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
25 сообщений из 38, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер, не позволяющий обновить больше n-строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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