![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Тригеры [D3, IB6.x]
Paster © (2004-01-06 16:09:00)
Есть процедура
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 17:06:00) [1]
Ну слава богу...
PS. Я на IB последний раз работал лет 5 назад :)
Paster (2004-01-06 17:04:00) [2]
Sandman25, не огорчайся, твой вариант как раз и заработал :)
хотя раньше почему-то не хотел
Paster (2004-01-06 17:02:00) [3]
после перезапуска системы всё заработало.
всем спасибо за помощь
Sandman25 (2004-01-06 17:02:00) [4]
[15] Paster (06.01.04 16:57)
Жаль. Значит, моя версия не подтвердилась. Можно как-то узнать, какой именно Column? Там случайно не буква O вместо цифры 0 стоит?
Paster (2004-01-06 16:57:00) [5]
И так
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 16:54:00) [6]
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:52:00) [7]
Да, всё равно ругается... всё та же ошибка
Sandman25 (2004-01-06 16:51:00) [8]
И ругань сохранилась? Unknown column?
Почем на один столбец ругается, а на другой нет? Если оба есть в одной таблице, как Вы говорите...
Paster (2004-01-06 16:50:00) [9]
Пробовал
Sandman25 (2004-01-06 16:48:00) [10]
[9] Paster (06.01.04 16:47)
Напишите Old.Id_Mat вместо Id_Mat
Paster (2004-01-06 16:47:00) [11]
Если пробую 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:43:00) [12]
[7] Johnmen © (06.01.04 16:36)
Хороший намек :)
Johnmen (2004-01-06 16:36:00) [13]
>Paster (06.01.04 16:35) [6]
Намекаю :) - а поле Old.SSar_FDaudz есть ?
Paster (2004-01-06 16:35:00) [14]
То Johnmen
Так в SP_Sar есть поле Id_Mat
Johnmen (2004-01-06 16:32:00) [15]
А что по поводу Sandman25 © (06.01.04 16:11) ?
Paster (2004-01-06 16:23:00) [16]
У меня не получается создать тригер
Paster (2004-01-06 16:16:00) [17]
Структура таблиц такая
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)
);
YuRock (2004-01-06 16:12:00) [18]
Скорее всего, ошибка в запросе
UPDATE MATERIAL
SET MAT_FDAUDZ=MAT_FDAUDZ+(:NewFDaudz-:OldFDaudz)
WHERE ID_MAT=:ID_MAT
Может, MAT_FDAUDZ и/или ID_MAT нет?
Sandman25 (2004-01-06 16:11:00) [19]
EXECUTE PROCEDURE MatUpdate Old.SSar_FDaudz, 0, Id_Mat;
Откуда ему взять Id_Mat?