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

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

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

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

И к запросу, сам иногда попадаю, не разобрался до конца в чем причина триггер или клиент. По триггеру проходит 3 обновления из 4-х без
всяких exception, с соостветствующим результатом, в одной таблице одно, в другой, другое.
...
Рейтинг: 0 / 0
26.04.2004, 20:08
    #32497567
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
авторНе релиз, но и поливать 6 - не стоит
Смотри сюда . Это всё баги IB6.0
А то не стоит, не стоит...
Глюк он и в Африке глюк!
...
Рейтинг: 0 / 0
29.04.2004, 11:55
    #32502250
hm
hm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
Загрузил 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
29.04.2004, 11:58
    #32502259
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
Это кривизна твоей аппликации, а не сервера.
На чем пишешь? Какими средства доступа пользуешься?
...
Рейтинг: 0 / 0
29.04.2004, 12:04
    #32502281
hm
hm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
МимопроходящийЭто кривизна твоей аппликации, а не сервера.
пробовал из IBExpert добавить запись - такая же беда ...
...
Рейтинг: 0 / 0
29.04.2004, 12:06
    #32502287
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
Значит нет в твоей таблице такой записи.
Violation of FOREIGN KEY на ровном месте не возникает.
...
Рейтинг: 0 / 0
29.04.2004, 12:09
    #32502300
hm
hm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
МимопроходящийЗначит нет в твоей таблице такой записи
к сожалению есть :((
3 день мучаюсь..
...
Рейтинг: 0 / 0
29.04.2004, 12:13
    #32502309
hm
hm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
и даже не это
http://www.rxlib.ru/faqs/faqc_en/25213.html
...
Рейтинг: 0 / 0
29.04.2004, 12:37
    #32502386
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
Это и есть кривизна софта.
Ты так и не сказал чем пользуешься.
...
Рейтинг: 0 / 0
29.04.2004, 12:50
    #32502425
hm
hm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
FB WI-V1.5.0.0.4306
запись пытался добавить в IBExpert 2004/04/01

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

ЗЫ: это мой 1-й проект
...
Рейтинг: 0 / 0
29.04.2004, 12:52
    #32502432
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
Давай сюда скрипты таблиц и триггеров. Будем посмотреть.
...
Рейтинг: 0 / 0
29.04.2004, 13:06
    #32502487
hm
hm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
Код: 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
29.04.2004, 13:19
    #32502523
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
Ты чем такой скрипт генерил? Он синтаксически неверен.
Ну да, ладно. В где проблемы-то? Чего делаешь-то? И как?
...
Рейтинг: 0 / 0
29.04.2004, 13:33
    #32502560
hm
hm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
добавляю запись в 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
29.04.2004, 13:34
    #32502567
hm
hm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
триггер, который делает update в другой таблице
ЗЫ: скрипт синтаксически неверный: когда лишние столбцы убирал, то до кучи че-нить убрал наверное
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / триггер, который делает update в другой таблице / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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