![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как создать генератор [D7, IB6.x]
Anti © (2007-08-14 23:37:00)Создал генератор:
CREATE GENERATOR GenOrders;
к нему триггер:
CREATE TRIGGER NewOrder FOR Orders;
ACTIVE BEFORE INSERT POSITION 0
AS
begin
if (NEW.ID is NULL) then NEW.ID = gen_id(GenOrders,1);
end
где "Orders" название таблици, а "ID" поле с уникальным ключём.
Компьютер "ругается" не хочет создавать триггер в чём ошибка не пойму, подскажите. За ранее спасибо!!!
tomkat (2007-08-16 10:54:00) [1]я не пытался донести смысл этого триггера, я пытался показать синтаксис скрипта создания ...
есть такая необходимость , обусловленная моей задачей....
Sergey13 (2007-08-16 10:46:00) [2]> [13] tomkat (16.08.07 10:37)
ОФТОП.
Три раза ты опубликовал свой тригер. Три раза я его посмотрел. И три раза не понял его смысла. 8-)
Зачем апдейтить ВСЮ таблицу LIST при изменении ОДНОЙ записи в DOCS? Можно подискутировать и о смысле существования самой таблицы с агрегатами из другой.
tomkat (2007-08-16 10:37:00) [3]SET SQL DIALECT 1;
SET NAMES < другая_кодовая_страница>;
SET TERM ^ ;
CREATE TRIGGER DOCS_AIUD0 FOR DOCS
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
begin
update list l
set l.suma=(select
sum(d.suma)
from docs d
where d.id_list=l.id );
end
^
SET TERM ; ^
Вася Правильный (2007-08-15 22:02:00) [4]
> Виталий Панасенко(дом) (15.08.07 21:45) [11]
ага, и генератором там не пахнет
Виталий Панасенко(дом) (2007-08-15 21:45:00) [5]
> tomkat (15.08.07 16:20) [10]
>
> вот еще точнее
Ха, а если у меня диалект - 1?!!! И кодовая страница не такая ?!!
tomkat (2007-08-15 16:20:00) [6]вот еще точнее
SET SQL DIALECT 3;
SET NAMES WIN1251;
SET TERM ^ ;
CREATE TRIGGER DOCS_AIUD0 FOR DOCS
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
begin
update list l
set l.suma=(select
sum(d.suma)
from docs d
where d.id_list=l.id );
end
^
SET TERM ; ^
tomkat (2007-08-15 16:18:00) [7]пример рабочего триггера :-)
CREATE TRIGGER DOCS_AIUD0 FOR DOCS
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
begin
update list l
set l.suma=(select
sum(d.suma)
from docs d
where d.id_list=l.id );
end
Desdechado (2007-08-15 15:27:00) [8]> Anti © (15.08.07 15:01) [6]
Ты читать научишься? Если не текст ошибки,то хотя бы ответы.
Я ж тебе написал, в чем у тебя косяк.
Sergey13 (2007-08-15 15:15:00) [9]> [6] Anti © (15.08.07 15:01)
А с чего ты взял, что у тебя не рабочий генератор?
ЗЫ: Может все таки начнешь нормально описывать проблему? Пытки тут редко применяют.
Anti (2007-08-15 15:01:00) [10]может у кого-нибуть есть пример рабочего генератора
Виталий Панасенко(дом) (2007-08-15 14:45:00) [11]
> Romkin © (15.08.07 14:41) [4]
>
> SET TERM нужен
>
Откуда такая уверенность ?
Romkin (2007-08-15 14:41:00) [12]SET TERM нужен
Desdechado (2007-08-15 10:47:00) [13]
> CREATE TRIGGER NewOrder FOR Orders ;
Лишний выделенный разделитель.
Виталий Панасенко (2007-08-15 10:28:00) [14]У меня то же ругается. Как думашь, что пишет? Не знаешь? Странно. Я думал он (компьтер) ругается одинаково.В любом случае. Ведь железяка все-таки
Sergey13 (2007-08-15 08:29:00) [15]> [0] Anti © (14.08.07 23:37)
> Компьютер "ругается"
Если матом, то можно вызвать милицию. 8-)