Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.02;
Скачать: CL | DM;

Вниз

Тригеры   Найти похожие ветки 

 
Paster   (2004-01-06 16:09) [0]

Есть процедура
CREATE PROCEDURE MatUpdate(OldFDaudz DOUBLE PRECISION, NewFDaudz DOUBLE PRECISION, Id_Mat INTEGER)
AS
BEGIN
UPDATE MATERIAL
SET MAT_FDAUDZ=MAT_FDAUDZ+(:NewFDaudz-:OldFDaudz)
WHERE ID_MAT=:ID_MAT;
END;

Она проходит без ошибок. Потом пытаюсь запустить тригер
CREATE TRIGGER SP_SAR_DELETE FOR SP_SAR
AFTER DELETE
AS BEGIN
EXECUTE PROCEDURE MatUpdate Old.SSar_FDaudz, 0, Id_Mat;
END;

Выдает ошибку General SQL error. Column unknown

Никак не могу понять в чем порблема. ПОмогите


 
Sandman25 ©   (2004-01-06 16:11) [1]

EXECUTE PROCEDURE MatUpdate Old.SSar_FDaudz, 0, Id_Mat;

Откуда ему взять Id_Mat?


 
YuRock ©   (2004-01-06 16:12) [2]

Скорее всего, ошибка в запросе
UPDATE MATERIAL
SET MAT_FDAUDZ=MAT_FDAUDZ+(:NewFDaudz-:OldFDaudz)
WHERE ID_MAT=:ID_MAT


Может, MAT_FDAUDZ и/или ID_MAT нет?


 
Paster   (2004-01-06 16:16) [3]

Структура таблиц такая

CREATE TABLE SP_SAR
(
ID_SSAR INTEGER Not Null,
ID_MAT INTEGER,
SSAR_DAUDZ DOUBLE PRECISION,
SSAR_CENA DOUBLE PRECISION,
SSAR_FDAUDZ DOUBLE PRECISION,
PRIMARY KEY (ID_SSAR)
);

CREATE TABLE MATERIAL
(
ID_MAT INTEGER Not Null,
MAT_NUM VARCHAR(6),
MAT_NOS VARCHAR(50),
MAT_DAUDZ DOUBLE PRECISION,
MAT_FDAUDZ DOUBLE PRECISION,
MAT_CENA DOUBLE PRECISION,
PRIMARY KEY (ID_MAT)
);


 
Paster   (2004-01-06 16:23) [4]

У меня не получается создать тригер


 
Johnmen ©   (2004-01-06 16:32) [5]

А что по поводу Sandman25 © (06.01.04 16:11) ?


 
Paster   (2004-01-06 16:35) [6]

То Johnmen
Так в SP_Sar есть поле Id_Mat


 
Johnmen ©   (2004-01-06 16:36) [7]

>Paster (06.01.04 16:35) [6]

Намекаю :) - а поле Old.SSar_FDaudz есть ?


 
Sandman25 ©   (2004-01-06 16:43) [8]

[7] Johnmen © (06.01.04 16:36)

Хороший намек :)


 
Paster   (2004-01-06 16:47) [9]

Если пробую Ssar_FDaudz ничего не меняет.

Просто для Inserta i Update нужни OLd i New

CREATE TRIGGER SP_SAR_UPDATE FOR SP_SAR
AFTER UPDATE
AS BEGIN
IF (Old.SSar_FDaudz<>New.SSar_FDaudz) THEN
EXECUTE PROCEDURE MatUpdate Old.SSar_FDaudz, New.SSar_FDaudz, Id_Mat;
END;


 
Sandman25 ©   (2004-01-06 16:48) [10]

[9] Paster (06.01.04 16:47)

Напишите Old.Id_Mat вместо Id_Mat


 
Paster   (2004-01-06 16:50) [11]

Пробовал


 
Sandman25 ©   (2004-01-06 16:51) [12]

И ругань сохранилась? Unknown column?
Почем на один столбец ругается, а на другой нет? Если оба есть в одной таблице, как Вы говорите...


 
Paster   (2004-01-06 16:52) [13]

Да, всё равно ругается... всё та же ошибка


 
Sandman25 ©   (2004-01-06 16:54) [14]

CREATE TRIGGER SP_SAR_DELETE FOR SP_SAR
AFTER DELETE
AS BEGIN
EXECUTE PROCEDURE MatUpdate Old.SSar_FDaudz, 0, Old.Id_Mat;
END;

Так?


 
Paster   (2004-01-06 16:57) [15]

И так

CREATE TRIGGER SP_SAR_DELETE FOR SP_SAR
AFTER DELETE
AS BEGIN
EXECUTE PROCEDURE MatUpdate Old.SSar_FDaudz, 0, Old.Id_Mat;
END;

и так

CREATE TRIGGER SP_SAR_DELETE FOR SP_SAR
AFTER DELETE
AS BEGIN
EXECUTE PROCEDURE MatUpdate SSar_FDaudz, 0, Id_Mat;
END;

ничего не прокатывает


 
Sandman25 ©   (2004-01-06 17:02) [16]

[15] Paster (06.01.04 16:57)

Жаль. Значит, моя версия не подтвердилась. Можно как-то узнать, какой именно Column? Там случайно не буква O вместо цифры 0 стоит?


 
Paster   (2004-01-06 17:02) [17]

после перезапуска системы всё заработало.
всем спасибо за помощь


 
Paster   (2004-01-06 17:04) [18]

Sandman25, не огорчайся, твой вариант как раз и заработал :)
хотя раньше почему-то не хотел


 
Sandman25 ©   (2004-01-06 17:06) [19]

Ну слава богу...

PS. Я на IB последний раз работал лет 5 назад :)



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

Текущий архив: 2004.02.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
4-2416
Les
2003-11-25 11:01
2004.02.02
Чтение файла шрифта


1-2111
pashtet
2004-01-19 18:15
2004.02.02
TDBGRID!!!!!


1-2150
Dark Hunter
2004-01-20 18:58
2004.02.02
Нарисовать сетку на форме


1-2197
snake1977
2004-01-20 15:09
2004.02.02
TDataBase в DLL


3-1985
www
2003-12-18 16:53
2004.02.02
Несколько запросов в 1-м TQuery