powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / триггер
22 сообщений из 22, страница 1 из 1
триггер
    #39354497
D_r_a_g_o_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача. Нужно при в ставке записей в одну таблицу, скопировать данные в другую.


CREATE OR REPLACE TRIGGER TR_COPY_BOOKS
BEFORE INSERT OR UPDATE
ON proverka
Begin
INSERT INTO prov

Where app_session in (
select max(APP_SESSION) as APP_SESSION
From proverka
)
End;

При добавление записей в таблицу proverka, ругается на триггер.
...
Рейтинг: 0 / 0
триггер
    #39354507
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты уверен, что это текст на PL/SQL?
Что такое INSERT INTO prov без VALUES ?
И что за висящее в воздухе WHERE?
...
Рейтинг: 0 / 0
триггер
    #39354514
D_r_a_g_o_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
INSERT INTO prov
From proverka
Where app_session in (
select max(APP_SESSION) as APP_SESSION
From proverka
...
Рейтинг: 0 / 0
триггер
    #39354517
Lary Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_r_a_g_o_n, а! теперь понятно!
...
Рейтинг: 0 / 0
триггер
    #39354524
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_r_a_g_o_nINSERT INTO prov
From proverka
Where ...

Ну нету такой конструкции в SQL. Ты их сам выдумываешь что ли?
...
Рейтинг: 0 / 0
триггер
    #39354526
D_r_a_g_o_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что понятно? подскажите, как написать.
...
Рейтинг: 0 / 0
триггер
    #39354533
Ivan Molodec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D_r_a_g_o_n, у меня тоже не создается. ORA-00942 возвращает(
...
Рейтинг: 0 / 0
триггер
    #39354534
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_r_a_g_o_n,

Почитать документацию для начала.
Какую задачу на самом деле требуется решить и почему выбран такой способ?
...
Рейтинг: 0 / 0
триггер
    #39354537
D_r_a_g_o_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно создать триггер на таблицу, чтобы увидеть данные в таблице т.к их вставляют и удаляют ночью . Для этого мне нужно из таблицы1 перекинуть в таблицу2 одну строку для анализа.
...
Рейтинг: 0 / 0
триггер
    #39354542
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_r_a_g_o_n,

т.к их вставляют и удаляют ночью
Вставляют и сразу удаляют? В рамках одной транзакции без промежуточных фиксаций? В одном потоке?

одну строку для анализа.
одну из ....?
...
Рейтинг: 0 / 0
триггер
    #39354546
D_r_a_g_o_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужна одна, я не знаю, что они там делаю, но утром данных нет.
...
Рейтинг: 0 / 0
триггер
    #39354550
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_r_a_g_o_n,

Так может, просто спросить "их"
что они там делаю

Может просто commit не делают после вставки и закрывают соединение.
...
Рейтинг: 0 / 0
триггер
    #39354554
Ivan Molodec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env, тише.. "они" могут услышать.
...
Рейтинг: 0 / 0
триггер
    #39354557
D_r_a_g_o_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пусть услышат, есть примеры?
...
Рейтинг: 0 / 0
триггер
    #39354568
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_r_a_g_o_n,

Примеры чего? Отсутствия commit?

В доке почитайте, что это такое. Найдите сайт "РСУБД для младших групп детского сада" в конце концов.

Заодно, поймёте, что в этом варианте триггер никак не поможет, ибо вставка из него будет в рамках той же транзакции.
...
Рейтинг: 0 / 0
триггер
    #39354647
bbam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D_r_a_g_o_n

Почитай что такое :NEW и :OLD в триггерах.

Из триггера вызвать процедуру, в которой и делать insert
В процедуре должна быть "pragma automous_transaction"
В конце процедуры делать commit
В этом случае процедура будет работать в отдельной сессии от триггера.
...
Рейтинг: 0 / 0
триггер
    #39354652
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bbam,

Поздравляю, помог человеку "выстрелить себе в ногу"
...
Рейтинг: 0 / 0
триггер
    #39354658
bbam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env

Если нужны данные только для анализа, то этот вариант подойдет.
Если для чего то другого, то искать новый вариант.
...
Рейтинг: 0 / 0
триггер
    #39354677
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bbamD_r_a_g_o_n

Почитай что такое :NEW и :OLD в триггерах.

Из триггера вызвать процедуру, в которой и делать insert
В процедуре должна быть "pragma automous_transaction"
В конце процедуры делать commit
В этом случае процедура будет работать в отдельной сессии от триггера.ты хоть думай что пишешь
...
Рейтинг: 0 / 0
триггер
    #39354678
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_r_a_g_o_nчтобы увидеть данные в таблице т.к их вставляют и удаляют ночью .Оставь на ночь включенным свет.
...
Рейтинг: 0 / 0
триггер
    #39354700
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_r_a_g_o_n,

Код: plaintext
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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
Connected.
SANDBOX@ee>;create table my_table (my_column number);

Table created.
SANDBOX@ee>;
SANDBOX@ee>;create table my_log(time timestamp with local time zone, message varchar2(2000));

Table created.
SANDBOX@ee>;create or replace trigger my_trigger
  2  before insert or update or delete
  3  on my_table
  4  declare
  5      pragma autonomous_transaction;
  6      message my_log.message%type;
  7  begin
  8      case
  9          when inserting then
 10              message := 'INSERTING';
 11          when updating then
 12              message := 'UPDATING';
 13          when deleting then
 14              message := 'DELETING';
 15          else
 16              null;
 17      end case;
 18      insert into my_log(time, message)
 19          values (current_timestamp, message);
 20      commit;
 21  end;
 22  /

Trigger created.
SANDBOX@ee>;insert into my_table(my_column) values(1);

1 row created.
SANDBOX@ee>;select * from my_log;
TIME                          MESSAGE
----------------------------- ----------
25-NOV-16 04.23.49.239000 PM  INSERTING

SANDBOX@ee>;update my_table set my_column = 2;

1 row updated.
SANDBOX@ee>;select * from my_log;
TIME                          MESSAGE
----------------------------- ----------
25-NOV-16 04.23.49.239000 PM  INSERTING
25-NOV-16 04.23.49.310000 PM  UPDATING

SANDBOX@ee>;delete from my_table;

1 row deleted.
SANDBOX@ee>;select * from my_log;
TIME                          MESSAGE
----------------------------- ----------
25-NOV-16 04.23.49.239000 PM  INSERTING
25-NOV-16 04.23.49.310000 PM  UPDATING
25-NOV-16 04.23.49.363000 PM  DELETING

SANDBOX@ee>;rollback;

Rollback complete.
SANDBOX@ee>;select * from my_log;
TIME                          MESSAGE
----------------------------- ----------
25-NOV-16 04.23.49.239000 PM  INSERTING
25-NOV-16 04.23.49.310000 PM  UPDATING
25-NOV-16 04.23.49.363000 PM  DELETING

...
Рейтинг: 0 / 0
триггер
    #39354731
Lary Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D_r_a_g_o_n,

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


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