Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
ВнизAutoIncrement Найти похожие ветки
← →
Астроном (2004-08-28 10:21) [0]Как создать триггер/процедуру/генератор для правильного авто-инкремента для поля типа Integer?
← →
Сергей Бастрыгин © (2004-08-28 12:39) [1]CREATE TRIGGER CALLS_BI FOR CALLS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.CDCALL IS NULL) THEN
NEW.CDCALL = GEN_ID(GEN_CALLS,1);
ELSE
IF(NEW.CDCALL > GEN_ID(GEN_CALLS,0)) THEN
NEW.CDCALL =GEN_ID(GEN_CALLS,NEW.CDCALL -GEN_ID(GEN_CALLS,0));
END
← →
Vemer © (2004-08-28 17:37) [2]Варианты:
1) Триггер
2) Свойство GenetatorField IBQuery / IBDataset.
3) Select GEN_ID(My_Gen,1) при вставке из ХП.
Применение 2-х последних делают позволяет мне отказаться от первого. Но конечно зависит от задачи.
← →
Koala © (2004-08-28 19:17) [3]Воспользуйся IBExpert, там при создании таблицы тригер и генератор можно создать автоматически на автоинкрементное поле с указанием номера с какого нужно начать
← →
Астроном (2004-08-29 04:27) [4]Пользуюсь IBExpert, создаю генератор:
CREATE GENERATOR GEN_AGENTS_CODE;
SET GENERATOR GEN_AGENTS_CODE TO 1;
затем создаю триггер:CREATE TRIGGER AGENTS_BI FOR AGENTS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.CODE IS NULL) THEN
NEW.CODE = GEN_ID(GEN_AGENTS_CODE,1);
END
Создаю приложение на Делфях, создаю запись Query.Insert,
но полю CODE присваивается "0" :(
Что не так делаю?
З.Ы. Кстати, где можно достать FIBPlus для D7?
← →
Сергей Бастрыгин © (2004-08-29 11:26) [5]Триггер у тебя пропустил без внимания, он сработает только если не указывать никакого значения при вставке при проверке на NULL, у тебя где-то кто-то ставит 0, посмотри внимательно
← →
Zacho © (2004-08-29 14:26) [6]Прочитай http://www.ibase.ru/devinfo/generator.htm - там все очень подробно написано.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c