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

Вниз

Управвление триггером в хранимой процедуре   Найти похожие ветки 

 
RomanH ©   (2006-04-21 13:07) [0]

Доброго дня мастера.Каким образом можно в хранимой прцедуре приостановить действие триггера котрый увеличивает значение ключевого поля. А после проведения определенных действий вновь включить его.
Alter trigger bef_ins_table inactive;
......
alter trigger bef_ins_Table active; не работает


 
Desdechado ©   (2006-04-21 13:14) [1]

Можно, но ... нельзя.
Лучше в триггере вставить проверку
IF( new.id IS NULL ) THEN
 new.id = gen_id


 
Сергей М. ©   (2006-04-21 13:29) [2]


> Каким образом можно в хранимой прцедуре приостановить действие
> триггера


Никаким.


 
RomanH ©   (2006-04-21 13:38) [3]


> Desdechado ©

Дело в том что я хочу его на время отключить.(Чтобы он не генерировал новый ID)
Вставить новую запись.(Где ID уже определена).
А затем вновь активизировать триггер.


 
Sergey13 ©   (2006-04-21 13:47) [4]

2[3] RomanH ©   (21.04.06 13:38)
>> Desdechado ©
>Дело в том что я хочу его на время отключить.(Чтобы он не генерировал новый ID)

Он тебе про это и написал как сделать.


 
Johnmen ©   (2006-04-21 13:52) [5]

> Каким образом можно в хранимой прцедуре приостановить действие
> триггера

Никаким.


 
RomanH ©   (2006-04-21 13:56) [6]


> Desdechado ©

Спасибо за подсказку, решил как сделать.
if (new.menid>1001000000) then new.menid=gen_id(gen_men,1);
Если при вставке  новой записи ID > 1001000000 то увеличиваем ID
иначе никаких действий не производим, просто вставляем запись с уже определенным ID.Спасибо еще раз.


 
Desdechado ©   (2006-04-21 16:29) [7]

> if (new.menid>1001000000)
ты здесь заложил большую бомбу


 
Johnmen ©   (2006-04-21 16:38) [8]


> Desdechado ©   (21.04.06 16:29) [7]
>
> > if (new.menid>1001000000)
> ты здесь заложил большую бомбу


А что за бомба? Какой системы?


 
Desdechado ©   (2006-04-21 16:53) [9]

Женя, ты меня поражаешь :)
Бомба в том, что когда-нибудь генератор достигнет этого числа, тогда все пойдет кувырком.


 
RomanH ©   (2006-04-21 18:25) [10]


> Desdechado ©

Вы были правы
IF( new.id IS NULL ) THEN
new.id = gen_id
так будет правильней.
А на счет бомбы, не знаю.
Просто позвольте мне объяснить почему иногда надо приостанавливать работу триггера.
Когда я добавляю запись на удаленной БД(УБД) ID начинается с 1001000000
на центральной БД(ЦБД) ID начинается с 0.
Когда происходит репликация на УБД я останавливаю триггер и добавляю ID созданные в ЦБД.


 
Johnmen ©   (2006-04-21 23:22) [11]


> Desdechado ©   (21.04.06 16:53) [9]
>
> Женя, ты меня поражаешь :)
> Бомба в том, что когда-нибудь генератор достигнет этого
> числа, тогда все пойдет кувырком.


Ну так автор же не наращивает ид для значений, меньших указанного значения. По кр. мере, я так понял с его слов и его кода...:) Чисто формально...
Ну а если он просто разделяет диапазон на два, то, конечно, лучше бы взять значение 2^62.


 
Desdechado ©   (2006-04-22 20:13) [12]

> Ну так автор же не наращивает ид для значений, меньших указанного значения.
По всей видимости, они наращиваются в другой БД, ЦБД.

> почему иногда надо приостанавливать работу триггера
Репликация делается обычно отдельно, имхо, когда нет подключенных пользователей. Тогда можно и триггеры отключить, причем штатным способом на все время репликации, а не в процедуре его дергать туда-сюда.



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

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

Наверх




Память: 0.47 MB
Время: 0.01 c
2-1149072620
adalx
2006-05-31 14:50
2006.06.18
Помогите новичку


5-1133168076
DimaBr
2005-11-28 11:54
2006.06.18
ПодСвойство компонента


4-1142930111
Arazel
2006-03-21 11:35
2006.06.18
Не могу создать TabControl, WinApi


15-1148560432
ArtemESC
2006-05-25 16:33
2006.06.18
BAT - файл...


15-1147467855
Yanis
2006-05-13 01:04
2006.06.18
Где скачать Delphi 2 и Delphi 1?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский