powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / After update и before update - разница?
13 сообщений из 13, страница 1 из 1
After update и before update - разница?
    #39877407
Зурбаган
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть у меня основная таблица TABL1 и есть её точная копия TABL2.
Надо организовать чтобы любое изменение записи в TABL1 приводило к изменению соответствующей записи в TABL2.
Буду делать через триггер.
Вот только вопрос - как сделать,чтобы он срабатывал - через After update и before update?

Текст триггера будет примерно такой
UPDATE TABL2 SET FIELD1=:NEW.FIELD1, FIELD2=:NEW.FIELD2 WHERE FIELD1=:OLD.FIELD1 AND FIELD2=:OLD.FIELD2;
...
Рейтинг: 0 / 0
After update и before update - разница?
    #39877411
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно пишут after, чисто для логики "сначала это, затем это".

В случае отсутствия проверок по другим таблицам, в т.ч. и по TAB1, связей TAB2 -> TAB1, конкурентного доступа и прочих тонкостей, - особо без разницы, что в транзакции идет, сначала TAB1, потом TAB2 или наоборот.
...
Рейтинг: 0 / 0
After update и before update - разница?
    #39877414
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зурбаганчерез After update и before update?В before актуальность :new значения не гарантирована.
...
Рейтинг: 0 / 0
After update и before update - разница?
    #39877419
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зурбаганточная копияЗачем?
...
Рейтинг: 0 / 0
After update и before update - разница?
    #39877494
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зурбаганеё точная копия TABL2.
Надо организовать чтобы любое изменение записи в TABL1 приводило к изменению соответствующей записи в TABL2.
MV сделай
...
Рейтинг: 0 / 0
After update и before update - разница?
    #39877496
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗурбаганНадо организовать чтобы любое изменение записи в TABL1 приводило к изменению соответствующей записи в TABL2.
Буду делать через триггер.

Специально для подобных целей есть набор системных "триггеров", materialized view называется
...
Рейтинг: 0 / 0
After update и before update - разница?
    #39877507
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗурбаганЕсть у меня основная таблица TABL1 и есть её точная копия TABL2.
вопрос, зачем это делать через триггер? чтобы тормозило?
...
Рейтинг: 0 / 0
After update и before update - разница?
    #39877542
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex-ls вопрос, зачем это делать через триггер? чтобы тормозило?

Услышал триггер, сработал триггер написать, что будет "тормозить?"

А если это справочник и там 37 записей? Тоже будет "тормозить"?
...
Рейтинг: 0 / 0
After update и before update - разница?
    #39877764
Зурбаган
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не вижу смысла городить materialized view.
Две таблицы небольшого размера и обновляются крайне редко. Для это триггер и нужен.
...
Рейтинг: 0 / 0
After update и before update - разница?
    #39877777
Фотография 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.
35.
create table dropme_small (id primary key, val)
as select rownum, 'value #'||rownum from dual connect by level < 1000;
Table created

-- раскомментируйте для fast refresh
--create materialized view log on dropme_small;

create materialized view dropme_smallcopy
refresh on commit complete --fast
as select * from dropme_small
;
Materialized view created

select * from dropme_small where id = 183;
        ID VAL
---------- -----------------------------------------------
       183 value #183

update dropme_small set val = 'Changed at '||to_char(sysdate,'yyyy-mm-dd"T"hh24:mi:ss') where id = 183;
1 row updated

select * from dropme_smallcopy where id = 183;
        ID VAL
---------- -----------------------------------------------
       183 value #183

commit;
Commit complete

select * from dropme_smallcopy where id = 183;
        ID VAL
---------- -----------------------------------------------
       183 Changed at 2019-10-17T16:04:53

SQL> 
...
Рейтинг: 0 / 0
After update и before update - разница?
    #39877785
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
merchalex-ls вопрос, зачем это делать через триггер? чтобы тормозило?

Услышал триггер, сработал триггер написать, что будет "тормозить?"

А если это справочник и там 37 записей? Тоже будет "тормозить"?
а может там одна строчка?
...
Рейтинг: 0 / 0
After update и before update - разница?
    #39877800
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousmaterialized viewЕсли внимательно изучить "постановку", нужно только обновление строк и только тех, что есть в TAB2.
...
Рейтинг: 0 / 0
After update и before update - разница?
    #39877814
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Если внимательно изучить "постановку"
Зурбаганосновная таблица TABL1 и есть её точная копия TABL2.
т.е., судя по постановке, таблицы тождественны и должны таковыми оставаться
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / After update и before update - разница?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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