Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.04 c
14-1094235016
Verg
2004-09-03 22:10
2004.09.26
Я плачу....


1-1094628758
HotDog
2004-09-08 11:32
2004.09.26
сохранение


3-1093849622
_sulent
2004-08-30 11:07
2004.09.26
Связь таблиц


3-1093863664
Aleksandr.
2004-08-30 15:01
2004.09.26
Можно ли как-то в RT бороться с Directory is busy?


1-1094046629
Heretic
2004-09-01 17:50
2004.09.26
Регистрация Ehlib





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский