Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Вниз

Логи сравнения (Оракл)   Найти похожие ветки 

 
}|{yk ©   (2004-04-22 16:53) [0]

Как их сделать красивее?
Т.е. при каждой операции над записью должны записываться старые значения полей и новые, а также тип операции. Насколько я понимаю что придется написать 6 триггеров для каждой таблицы. Можно ли как-то упростить такй процесс?
Ну так а мутации как обойти? 1 each row trigger, 2-ой - statement trigger
Если сделать автономную транзакцию, то
если была попытка удалить, но она завершилась неудачно, то триггер все равно сработает


 
Reindeer Moss Eater ©   (2004-04-22 16:56) [1]

Инсерты в таблицу лога в триггерах.
Автономные транзакции не нужны.


 
Курдль ©   (2004-04-22 16:59) [2]

Почему 6 и причем здесь мутации, если Вы будете просто брать значения New и Old?


 
}|{yk ©   (2004-04-22 17:01) [3]

Но а как тогда мутации обойти?


 
Курдль ©   (2004-04-22 17:04) [4]

Просто делаете по "after" триггеру на каждую таблицу (внутри распознаете, что за операция) и пишете в таблицу логов. Не могу понять, откуда Вы мутации увидели?


 
}|{yk ©   (2004-04-22 17:05) [5]

если мутаций не будет то 3. Или можно узнать какое действие было совершено?


 
Reindeer Moss Eater ©   (2004-04-22 17:06) [6]

Или можно узнать какое действие было совершено?

Зачем?
Если транзакция обломается, то и в лог ничего не попадет.
Транзакция-то та же самая.


 
}|{yk ©   (2004-04-22 17:06) [7]

А вот по этому пункту
>если была попытка удалить, но она завершилась неудачно, то триггер
>все равно сработает


 
Reindeer Moss Eater ©   (2004-04-22 17:07) [8]

Ну и что что сработает?


 
Курдль ©   (2004-04-22 17:09) [9]


> Ну и что что сработает?

Ничего не сработает, если триггер "after insert, update, delete".


 
}|{yk ©   (2004-04-22 17:10) [10]

Это в автономной транзакции...


 
Reindeer Moss Eater ©   (2004-04-22 17:11) [11]

Даже если он трижды before, ничего не произойдет.


 
Reindeer Moss Eater ©   (2004-04-22 17:12) [12]

Зачем тебе автономная транзакция?

Звучит красиво?


 
Курдль ©   (2004-04-22 17:14) [13]

Вопрос }|{yk-у: таблица логов ссылается на таблицы, которые она логирует по внешним ключам?


 
}|{yk ©   (2004-04-22 17:15) [14]

Да нет...
Стоит вот такой триггер
CREATE OR REPLACE TRIGGER test_trg
AFTER
 INSERT OR DELETE OR UPDATE
ON app_rs
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
begin
insert into app_temp values ("222");
end;
и вот если я пытаюсь удалить из app_rs данные, по которым есть констрейнты (внешние связи), то вызывается ошибка, но данные во временную таблицу пишутся


 
}|{yk ©   (2004-04-22 17:20) [15]

2Курдль ©   (22.04.04 17:14) [13]
нет


 
Курдль ©   (2004-04-22 17:22) [16]


> 2Курдль ©   (22.04.04 17:14) [13]
> нет

Если триггер страбатывает на изменение одной таблицы и пишет в другую - ничем не связанную с первой, то какие там могут быть мутации?


 
Reindeer Moss Eater ©   (2004-04-22 17:24) [17]

Если триггер сработал в транзакции, которая завершилась откатом, то ничего вставленное из этого триггера в другую таблицу не закоммитится.

Если конечно эта вставка не происходит в автономной (за каким-то лешим) транзакции


 
}|{yk ©   (2004-04-22 17:35) [18]

Да, все нормально


 
Petr V. Abramov ©   (2004-04-22 17:42) [19]

А не проще ли использовать logminer? Правда, тогда база должна быть в archivelog-режиме, и логи (оракловские) нельзя выбрасывать, зато решение универсальное. Хоть с их разбором сначала помучаться придется, но придется один раз, а на каждую таблицу триггеры вешать.


 
}|{yk ©   (2004-04-22 17:48) [20]

а logminer под какие Ораклы есть? Просто у меня версия 8,1,7


 
Petr V. Abramov ©   (2004-04-22 17:54) [21]

есть под 8.1.7 Правда, не знаю, какой Edition для этого нужен (у меня был Enterprise, поэтому вопросом не задавался). В любом случае см. Supplied PL/SQL Packages Ref., на слово dbms_logminer_и_т_д


 
Sergey13 ©   (2004-04-23 08:51) [22]

2}|{yk ©
Пример, почти настоящий 8-)
CREATE OR REPLACE TRIGGER "TR_TP2LOG"
AFTER INSERT OR DELETE OR
UPDATE ON "BD"."TP"
FOR EACH ROW
begin
 if deleting then
   insert into bd.tp_log ....
  end if;
 if inserting then
   insert into bd.tp_log ....
 end if;
 if updating then
   insert into bd.tp_log ....
  end if;
end;
Насчет Логмайнера - смотря зачем надо логи иметь. Если админу разбираться кто-чего наделал - подойдет. Если юзер должен их видеть в программе - бесполезно, ИМХО, или по крайней мере проблематично.


 
DenK_vrtz ©   (2004-04-23 09:09) [23]

>при каждой операции над записью должны записываться старые значения полей и новые, а также тип операции

обычная таблица истории документов и никаких извращений

Reindeer Moss Eater ©   (22.04.04 16:56) [1] + Sergey13 ©   (23.04.04 08:51) [22]


 
Курдль ©   (2004-04-23 11:20) [24]


> 2}|{yk ©
> Пример, почти настоящий 8-)

Ну так и чё? Не работает? 8-()


 
Sergey13 ©   (2004-04-23 11:35) [25]

2Курдль ©   (23.04.04 11:20) [24]
А зачем бы я его давал, если бы он не работал? 8-)


 
}|{yk ©   (2004-04-23 11:45) [26]

Дык.. Я еще вчера сам такой написал... Но и за это - спасибо...


 
Sergey13 ©   (2004-04-23 11:50) [27]

2}|{yk ©   (23.04.04 11:45) [26]
>Дык.. Я еще вчера сам такой написал...
А тут то не отчитался о содеяном. 8-)


 
Petr V. Abramov ©   (2004-04-23 15:25) [28]

> Sergey13 ©   (23.04.04 08:51) [22]
> Если админу разбираться кто-чего наделал - подойдет. Если юзер
> должен их видеть в программе - бесполезно
 Админ - тоже юзер, хоть и продвинутый (по крайней мере должен быть :), а не божество великое и ужасное :) Вполне можно интерфейс сделать, хоть и погеморрившись - один раз, а не каждый, когда такая задача возникнет.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.034 c
1-1083911411
SergS
2004-05-07 10:30
2004.05.23
Об использовании FindComponent.


11-1072250148
PVOzerski
2003-12-24 10:15
2004.05.23
Новости от FPC Team


14-1083269893
тихий вовочка
2004-04-30 00:18
2004.05.23
Определение термина "окно"


14-1083312818
Sour
2004-04-30 12:13
2004.05.23
XML+XSD


4-1081423926
Евгения
2004-04-08 15:32
2004.05.23
Как перенести папку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский