Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2014, 21:44   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию Счетчик в FireBird

Имеется БД FireBird, ламерская таблица, ничего особенного. Задача формировать первичный ключ. Сама БД собрана с помощью SQL Manager Lite for InterBase & Firebird, так вот она там наформировала для первичных ключей возможность автоинкремента через триггеры и генераторы. Вопрос, как из скромного приложения (Делфи + InterBase) генерировать первичный ключ? Понятно, что доверять юзеру такой вопрос нельзя никак.
Таблица называется BRANCH, первичный ключ ID. Текст автоинкремента:
Код:
CREATE TRIGGER BI_BRANCH_ID FOR BRANCH
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
      NEW.ID = GEN_ID(BRANCH_ID_GEN, 1);
END
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 22.01.2014 в 21:49.
Utkin вне форума Ответить с цитированием
Старый 22.01.2014, 22:18   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

зачем скромному приложению заниматься не скромными вещами?
eval вне форума Ответить с цитированием
Старый 22.01.2014, 22:33   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы тоже не делал автоинкремент на основе клиента.
По-моему триггер в данном случае хороший выход, чем он не подошел?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.01.2014, 22:46   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

CREATE GENERATOR BRANCH_ID_GEN сделали?
Ну и спокойно INSERT без указания ключа
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.01.2014, 06:23   #5
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

дернул из своей базы
Код:
CREATE OR ALTER TRIGGER AKT_BI FOR AKT
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gen_akt_id,1);
end
Код:
CREATE SEQUENCE GEN_AKT_ID;
Всё работает без нареканий
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 24.01.2014, 06:03   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Всем спасибо, по совету Аватара отказался от DBNavigatora и жизнь сразу удалась.
Цитата:
зачем скромному приложению заниматься не скромными вещами?
Должно же оно чем-то заниматься.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 24.01.2014, 09:38   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

казалось бы где генератор и где навигатор
eval вне форума Ответить с цитированием
Старый 24.01.2014, 09:44   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

навигатор был немножко в личной переписке
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
счетчик Мария =) Помощь студентам 14 24.01.2012 13:08
Счетчик. Bilargo JavaScript, Ajax 2 15.08.2010 13:54
Счетчик Alex_sim Помощь студентам 2 13.06.2010 04:30
счетчик Dimati87 Microsoft Office Excel 3 09.04.2009 10:02