Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / After update и before update - разница? / 13 сообщений из 13, страница 1 из 1
17.10.2019, 08:09
    #39877407
Зурбаган
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
After update и before update - разница?
Есть у меня основная таблица 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
17.10.2019, 08:23
    #39877411
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
After update и before update - разница?
Обычно пишут after, чисто для логики "сначала это, затем это".

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

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

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

А если это справочник и там 37 записей? Тоже будет "тормозить"?
...
Рейтинг: 0 / 0
17.10.2019, 15:33
    #39877764
Зурбаган
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
After update и before update - разница?
Не вижу смысла городить materialized view.
Две таблицы небольшого размера и обновляются крайне редко. Для это триггер и нужен.
...
Рейтинг: 0 / 0
17.10.2019, 16:06
    #39877777
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
After update и before update - разница?
Зурбагангородить
Что там городить-то???

Код: 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
17.10.2019, 16:16
    #39877785
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
After update и before update - разница?
merchalex-ls вопрос, зачем это делать через триггер? чтобы тормозило?

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

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


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