Форум: "Базы";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
ВнизТриггеры Найти похожие ветки
← →
Spawn (2003-07-11 18:10) [0]Пытаюсь сделать триггер, чтобы имитировать автоинкрементное поле.
Сначала создаю генератор
CREATE GENERATOR DOC_ID
Задаю начальное значений
SET GENERATOR DOC_ID TO 1
При попытке создать триггер выдает ошибку Unexpected end of command. В чем ошибка?
Триггер:
CREATE TRIGGER BEF_INS_DOC FOR DOC
ACTIVE BEFORE INSERT AS
BEGIN
NEW.ID=GEN_ID(DOC_ID,1);
END
Заранее спасибо.
← →
KDS (2003-07-11 18:18) [1]проблема в знаке ";"
надо использовать SET TERM так
SET TERM ^ ;
CREATE TRIGGER BEF_INS_DOC FOR DOC
ACTIVE BEFORE INSERT AS
BEGIN
NEW.ID=GEN_ID(DOC_ID,1);
END
^
SET TERM ; ^
← →
Spawn (2003-07-11 18:51) [2]А можно ли как нибуть удалить или изменить существующий генератор? При попытке вызвать
DROP GENERATOR DOC_ID пишет что ето невозможно
а что нить связаное с ALTER GENERATOR я не нашел
← →
Spawn (2003-07-11 19:31) [3]Уже разобрался))
← →
Spawn (2003-07-11 19:40) [4]При удалении записи в базе значение генератора нужно самому уменьшать? Если да то как? Вот , к примеру, тако триггер:
CREATE TRIGGER BEF_DEL FOR DOC
ACTIVE BEFORE DELETE
AS
BEGIN
//что тут необходимо написать для уменьшения значений генератора?
END
← →
KDS (2003-07-12 12:25) [5]нет, при удалении уменьшать его НЕ НАДО, хотя реализовать это легко:
NEW.ID=GEN_ID(DOC_ID, -1);
это грозит тем что при удалении 5-ой записи из 9 -ти имеющихся
счетчик откатит свое значение на 8-ку и при следующем добавлении возникнет еще одна 9!-я запись! Усек?
Ну и пусть себе будет не сплошной автоинкремент,а с дырками типа 1,2,4,5,7... ведь это поле нужно всего лишь для обеспечения уникальности записей для внутренней работы с ними (Удаление, правка...)
И вообще прошло то время, когда писали DDL скрипты в ДБЭксплорере.
Качни себе IB Expert отсюдава www.ibexpert.com и забудешь про ручную работу. Там все это делается визуально!
← →
Spawn (2003-07-12 18:24) [6]Качну когда на счету юудет побольше)) А то у меня метр 6 р). Я пока Interactive SQL юзаю в IBConsole
← →
VID (2003-07-12 19:59) [7]To Spawn: так ты долго будешь мучаться...
← →
Zacho (2003-07-14 07:05) [8]2 Spawn:
Настоятельно рекомендую прочитать статью http://www.ibase.ru/devinfo/generator.htm да и остальные статьи на http://www.ibase.ru/develop.htm стоит почитать.
← →
iKS (2003-07-14 09:55) [9]Вообще-то, значение гениератора "трогать" не рекомендуется ни при каких обстоятельствах, хоть это и возможно.
← →
seregin (2003-07-14 10:02) [10]уменьшить можно легко
select gen_id(your_gen, -1) from any_table
← →
Johnmen (2003-07-14 10:10) [11]>seregin (14.07.03 10:02)
Это же на сколько уменьшится ? :)))
← →
seregin (2003-07-14 10:16) [12]на -1.
не понял, а что не так?
← →
Alexandr (2003-07-14 10:18) [13]ха!
уменьшится на количество отфетченных записей из any_table...
и а вот сколько отфетсчится это сложный вопрос...
← →
seregin (2003-07-14 10:25) [14]>> Alexandr
здорово!!!!
не задумывался...
ну тогда можно так (тока синтаксис не знаю)
select gen_id(your_gen, -1) first 1 from any_table
← →
Alexandr (2003-07-14 10:26) [15]экспериментатор блин...
select gen_id(your_gen, -1) from RDB$database
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c