powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / триггер, который делает update в другой таблице
25 сообщений из 29, страница 1 из 2
триггер, который делает update в другой таблице
    #32497471
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОЧЧЕНЬ ПРОСТОЙ ВОПРОСИК, но с подвохом :((

IB 6.0 ; sql dialect-l3

есть две таблицы GOODS (good_id, group_id), GOODSGROUP (group_id, last_no).
После вставки записи в таблицу GOODS в таблице GOODSGROUP для соответствующей записи (goods.group_id=goodgroup.group_id) должно увеличиваться значение в поле LAST_NO (integer) на единицу.

для таблицы GOODS сделал триггер after insert

AS
begin
update goods_group set LAST_NO = LAST_NO + 1
where goods_group.group_id = new.group_id;
end

И казалось все хорошо работает. Добавляю запись в GOODS увеличивается значение LAST_NO в таблице GOODSGROUP. Но находится k-ая запись в GOODSGROUP, для которой LAST_NO увеличивается в N раз.
N - количество записей добавленных в GOODS, где goods.group_id<>k

в чем прикол??
Просвятите если кто знает?
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32497481
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторв чем прикол??
IB 6.0 на свалку!
Очень похоже на битые индексы по полю group_id.
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32497486
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в саммом триггере проблем нет?
Есть ли другой выход кроме как "ИБ 6.0 на свалку?"
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32497495
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсть ли другой выход кроме как "ИБ 6.0 на свалку?"
-Доктор, а я жить буду?
-А смысл?..
(из анекдота)

Не в этом месте, так в другом вылезет баг, коих у IB6.0 как у Каштанки блох...

Убей индекс по полю group_id и создай заново.
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32497499
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. если я правильно понял - проблем в коде нет ?!
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32497519
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В триггере? А где там могут быть проблемы?
Я не вижу.
Правда и таблиц твоих не вижу тоже...
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32497526
Лкшы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблем - наверное нет, кроме той, что два клиента могут одновременно попробовать поменять запись
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32497529
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этом случае будет просто Lock Conflict и один из двух обломится.
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32497537
Лкшы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Мимопроходящий
на счет 6 IB - проработал 1,5 года, - быkи нектороные сбои, но сервер жил, полгода назад перешел на FB 1.5 RC7 - за три месяца базу положил 2 раза. Может я DRIVER под HANDSET кривой поставил, но тем не менее. На 6 IB - с его тараканами - мне это не удавалось.
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32497545
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RC7 не релиз.
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32497560
Лкшы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Мимопроходящий
Не релиз, но и поливать 6 - не стоит, на самих запросах он впоне корректно работал. Пока на релизе не пробовал, но RC7 к примеру, у меня запросто потерял статистику по индексам послеg restora. По релизу - пока не знаю, база работает плотно - restor, редкая вещь.

И к запросу, сам иногда попадаю, не разобрался до конца в чем причина триггер или клиент. По триггеру проходит 3 обновления из 4-х без
всяких exception, с соостветствующим результатом, в одной таблице одно, в другой, другое.
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32497567
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНе релиз, но и поливать 6 - не стоит
Смотри сюда . Это всё баги IB6.0
А то не стоит, не стоит...
Глюк он и в Африке глюк!
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502250
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Загрузил Fb WI-V1.5.0.4306 проблема исчезла. Но..
напомню.. есть 2 таблицы

GOODS - master table
good_id - PK
group_id - FK (varchar 5; win1251; collation pxw_cyr)

GOODS_GROUP detailed table
group_id - PK (varchar 5; win1251; collation pxw_cyr)

пока не связываешь эти таблицы (FK), то все ок. Но как только связываешь, то при попытке добавить новую запись в GOODS получаю ошибку типа
"violation of FOREIGN KEY constraint ..."

PS в GOODS.GROUP_ID добовляется значение, которое уже есть в GOODS_GROUP.GROUP_ID
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502259
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это кривизна твоей аппликации, а не сервера.
На чем пишешь? Какими средства доступа пользуешься?
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502281
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийЭто кривизна твоей аппликации, а не сервера.
пробовал из IBExpert добавить запись - такая же беда ...
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502287
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит нет в твоей таблице такой записи.
Violation of FOREIGN KEY на ровном месте не возникает.
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502300
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийЗначит нет в твоей таблице такой записи
к сожалению есть :((
3 день мучаюсь..
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502309
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и даже не это
http://www.rxlib.ru/faqs/faqc_en/25213.html
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502386
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это и есть кривизна софта.
Ты так и не сказал чем пользуешься.
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502425
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB WI-V1.5.0.0.4306
запись пытался добавить в IBExpert 2004/04/01

клиента пишу на Д7

ЗЫ: это мой 1-й проект
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502432
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай сюда скрипты таблиц и триггеров. Будем посмотреть.
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502487
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
36.
37.
SET SQL DIALECT  3 ;
SET NAMES WIN1251;

CREATE TABLE GOODS (
    GOOD_ID     VARCHAR( 15 ) NOT NULL,
    GROUP_ID    VARCHAR( 5 ) NOT NULL,
    NAME1       VARCHAR( 50 ) NOT NULL COLLATE PXW_CYRL,
    TARIH       DATE NOT NULL,
    PRICE1      DOUBLE PRECISION,
    PRICE2      DOUBLE PRECISION,

ALTER TABLE GOODS ADD CONSTRAINT PK_GOODS PRIMARY KEY (GOOD_ID);

ALTER TABLE GOODS ADD CONSTRAINT FK_GOODS FOREIGN KEY (GROUP_ID) REFERENCES GOODS_GROUP (GROUP_ID) ON UPDATE CASCADE;

);

CREATE TRIGGER GOODS_LASTNO_COUNT FOR GOODS
ACTIVE AFTER INSERT POSITION  0 
AS
begin
  update goods_group set goods_group.last_no = goods_group.last_no +  1 
  where goods_group.group_id = new.group_id;
end


CREATE TABLE GOODS_GROUP (
    GROUP_ID  VARCHAR( 5 ) NOT NULL COLLATE PXW_CYRL,
    GRNAME1   VARCHAR( 40 ) NOT NULL COLLATE PXW_CYRL,
    GRNAME2   VARCHAR( 40 ),
    LAST_NO   INTEGER NOT NULL
);


ALTER TABLE GOODS_GROUP ADD CONSTRAINT PK_GOODS_GROUP PRIMARY KEY (GROUP_ID);




[SRC][/SRC]
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502523
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты чем такой скрипт генерил? Он синтаксически неверен.
Ну да, ладно. В где проблемы-то? Чего делаешь-то? И как?
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502560
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавляю запись в GOODS_GROUP
GROUP_ID-------GRNAME1-------LAST_NO
BN---------------BAYAN-----------0


Далее пытаюсь вставить в GOODS
GOOD_ID------GROUP_ID------NAME1-----TARIH
1--------------BN------------blabla------29.04.2004

и получаю

"violation of FOREIGN KEY constraint..."
...
Рейтинг: 0 / 0
триггер, который делает update в другой таблице
    #32502567
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ: скрипт синтаксически неверный: когда лишние столбцы убирал, то до кучи че-нить убрал наверное
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / триггер, который делает update в другой таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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