Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер на запрет инсерта / 15 сообщений из 15, страница 1 из 1
08.10.2018, 16:13
    #39714519
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
Доброе всем.

Задачка интересная.

Дано : Таблица my_table ( a number , b varchar2 , c varchar2 ....... ).

Нужно создать триггер который проверяет какие данные пользователь хочет вставить колонку b . Если эти данные содержат в себе символ % то отменить инсерт и перейти к следующей вставке ( инсерта ) . Надеюсь доступно обьяснил .
...
Рейтинг: 0 / 0
08.10.2018, 16:15
    #39714523
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
maverick2104Задачка интересная.

В каком месте она интересная-то? В той из двух строчек, которая проверяет условие или в
той, которая выбрасывает исключение?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.10.2018, 16:25
    #39714533
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
Dimitry Sibiryakov которая выбрасывает исключение?


Через что это реализуется ?
...
Рейтинг: 0 / 0
08.10.2018, 16:30
    #39714539
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
maverick2104,

инсерт вставляет три строки, во второй есть %, что делать с 1 и 3?

.....
stax
...
Рейтинг: 0 / 0
08.10.2018, 16:30
    #39714540
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
maverick2104то отменить инсерт и перейти к следующей вставке 14323375
...
Рейтинг: 0 / 0
08.10.2018, 16:32
    #39714542
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
Staxmaverick2104,

инсерт вставляет три строки, во второй есть %, что делать с 1 и 3?

.....
stax

Оставить в таблице .
...
Рейтинг: 0 / 0
08.10.2018, 16:34
    #39714543
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
Elicmaverick2104то отменить инсерт и перейти к следующей вставке 14323375

Вставить а затем удалить != не вставлять.

SY.
...
Рейтинг: 0 / 0
08.10.2018, 16:36
    #39714549
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
INSTEAD OF
...
Рейтинг: 0 / 0
08.10.2018, 16:43
    #39714561
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
Elicmaverick2104то отменить инсерт и перейти к следующей вставке 14323375
странно я написал

заполнять надо таблицу ровидов

если есть запрет на удаление (см соседнуюю ветку) то не прокатит

.....
stax
...
Рейтинг: 0 / 0
08.10.2018, 17:05
    #39714572
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
maverick2104Через что это реализуется ?

RAISE/EAISE_APPLICATION_ERROR.

maverick2104инсерт вставляет три строки, во второй есть %, что делать с 1 и 3?

Гораздо интереснее вопрос что делать с пользователем, который кричит "ну я же вставлял,
куда она делась?"
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.10.2018, 17:15
    #39714580
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
Dimitry Sibiryakovmaverick2104Через что это реализуется ?

RAISE/EAISE_APPLICATION_ERROR.

maverick2104инсерт вставляет три строки, во второй есть %, что делать с 1 и 3?

Гораздо интереснее вопрос что делать с пользователем, который кричит "ну я же вставлял,
куда она делась?"


Я тот пользователь.

Есть джоб который инсертит в эту таблицу несколько сотен строчек ежедневно , некоторые из них ( только в одной колонке ) содержат % . Мне нужty триггер который пропустит эти строчки и выведет мне их в переменную .

Либо второй вариант , он автоматом лечил эти строчки , то есть заменяет % пробелом .
...
Рейтинг: 0 / 0
08.10.2018, 17:18
    #39714582
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
maverick2104Dimitry SibiryakovГораздо интереснее вопрос что делать с пользователем, который кричит "ну я же вставлял,
куда она делась?"


Я тот пользователь.


А что мешает убрать ненужные строки на этапе подготовки данных вставки?
...
Рейтинг: 0 / 0
08.10.2018, 17:21
    #39714584
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
maverick2104Мне нужty триггер который пропустит эти строчки и выведет мне их в
переменную .

Всё равно не вижу ничего интересного. Ты вообще документацию читать пытался? Или уснул,
так и не добравшись до error_logging_clause?

maverick2104Либо второй вариант , он автоматом лечил эти строчки , то есть заменяет % пробелом .

Это ещё менее интересно, простой REPLACE().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.10.2018, 17:21
    #39714586
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
XMLermaverick2104пропущено...


Я тот пользователь.


А что мешает убрать ненужные строки на этапе подготовки данных вставки?

Нет возможности .
...
Рейтинг: 0 / 0
08.10.2018, 17:23
    #39714588
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер на запрет инсерта
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
create table my_table ( a number , b varchar2(10) constraint b_chk check (instr(b,'%')=0) )
;
Table created

exec dbms_errlog.create_error_log( 'my_table', 'my_table_ERR' );
PL/SQL procedure successfully completed

insert into my_table(a,b)
select rownum, 'val'||rownum||case mod(rownum,3) when 0 then '%' end
from dual connect by level < 10
log errors into my_table_ERR
 REJECT LIMIT unlimited
;
6 rows inserted

select * from my_table;
    A B
----- -----
    1 val1
    2 val2
    4 val4
    5 val5
    7 val7
    8 val8
6 rows selected

select a,b,ORA_ERR_NUMBER$ from my_table_err;
A     B     ORA_ERR_NUMBER$
----- ----- ---------------
3     val3%            2290
6     val6%            2290
9     val9%            2290

SQL> 
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер на запрет инсерта / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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