powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проблема с триггером ...
15 сообщений из 15, страница 1 из 1
Проблема с триггером ...
    #32593582
mxms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При добавлении записей в таблицу DOPSTR у меня срабатывает это триггер!

CREATE TRIGGER TRIGG_DOPSTR FOR DOPSTR
ACTIVE AFTER INSERT POSITION 0
AS
begin
update Dopstr set Dopstr.id_dopstr = gen_id(gen_dopstr_id,1) where dopstr.id_dopstr is null;
end

По умолчанию поле ID_DOPSTR содержит null! (т.е. разрешены пустые значения)
Но почему-то при добавлении очередной записи меняются номера у всех записей, которые получили значение поля ID_DOPSTR из данного триггера!
Например: было 3 записи с значениями в поле ID_DOPSTR 1,2,3 соответственно! При добавлении 4 записи они будут иметь след. значения в поле ID_DOPSTR: 4,5,6,7 ?
В чем проблема и как её решить?
Ведь цель иметь поле с уникальными значениями!

Спасибо.
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32593597
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/105246#790756
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32593738
mxms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изменив триггер на BEFORE INSERT и используя NEW у меня попрежнему при добавлении новой записи все старые записи меняют значение поля ID_DOPSTR ? (пример см. выше)
Проблема осталась! 1,2,3 --> 4,5,6,7
Что делать?
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32593742
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как теперь выглядит триггер?
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32593785
mxms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пробовал:
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TRIGGER TRIGG_DOPSTR FOR DOPSTR
ACTIVE BEFORE INSERT POSITION  0 
AS
begin
   if  new.id_dopstr is null then
   new.id_dopstr = gen_id(gen_dopstr_id, 1 );
end
не помогло ... :((
Затем попробовал так:
Код: plaintext
1.
2.
3.
4.
5.
CREATE TRIGGER TRIGG_DOPSTR FOR DOPSTR
ACTIVE BEFORE INSERT POSITION  0 
AS
begin
   new.id_dopstr = gen_id(gen_dopstr_id, 1 );
end
Так же не помогло ... и совсем ничего не могу понять
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32593800
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
очень странно! покажите запрос, которым приложение вставляет новую строку. может, апдейт там где-то был ранее засунут. ничего умнее придумать не могу.
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32593803
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или триггер на эту таблицу еще один есть (например, остался старый after insert)
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32593837
mxms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да в том то и дело что я не знаю как программа вставляет данные в таблицу, я знаю только структуру данных и имею к ней доступ! Поэтому я и хотел средствами СУБД Interbase добавить уникальное поле в таблицу и его заполнять независимо от программы!
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32593862
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
старый триггер не остался?
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32593950
mxms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Старый триггер не остался!
Я проверил у меня почему-то триггер вызывается столько раз сколько записей я вставил (до этого момента) с его использованием!
Почему так много раз? Может попробовать сделать поле NOT NULL и давать в него какое-то по умолчанию значение а затем его менять?
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32593976
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мистика.
а если вообще триггера нет что происходит?
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32594031
mxms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я удалил триггер и у меня теперь при добавлении новой записи все старые обновились на значение по умолчания, а уменя это 0!
Действительно мистика, вроде других триггеров нету ...
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32594052
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) надо точно убедиться, что других триггеров нету.
2) надо как-нибудь выковырять запрос, коорый программа посылает серверу. может, местные гуры подскажут, как (trace odbc calls какой-нибудь).
3) можно посмотреть какие есть хранимые процедуры, не через процедуры ли осуществляется вставка. если их слишком много, то по названию попытаться определить. и посмотреть, как процедура написана.

мистика, ужасы
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32594057
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читать, читать, читать...
Потому как для участников форума, твои "открытия" выглядят столь же
неожиданными как утверждение о том, что в Китае живут китайцы,
или, что земля-то круглая, оказывается...
...
Рейтинг: 0 / 0
Проблема с триггером ...
    #32594060
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Адрессовано было mxms
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проблема с триггером ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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