Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
 
Mmaaxx
1 / 1 / 0
Регистрация: 28.02.2012
Сообщений: 18
1

Проблемы с триггером

23.04.2013, 09:23. Просмотров 469. Ответов 6
Метки нет (Все метки)

У меня есть триггер, который генерирует id для новой записи в таблице. Когда я пытаюсь добавить запись в таблицу с помощью dbnavigator, не вводы id для новой записи вручную, выдается сообщение об ошибке "id надо присвоить значение"
Что собственно сделать что бы записи добавлялись нормально?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2013, 09:23
Ответы с готовыми решениями:

Проблемы с WriteFile
Надо открыть/создать файл, и всё время записывать туда какуюто информацию, и...

Проблемы с поиском в б/д
Всем доброго времени суток. В общем проблема такова, сделал поиск SQL...

Проблемы с DBCombobox
Здрасьте, создала DBCombobox в С++ Builder'е, привязала к нему базу данных...

Проблемы с папками
Расскажите как сделать при выборе класса авто, проверить наличие папки,если ее...

Проблемы с условием
void read(char*fname,AnsiString *st,int i) { TStringList *List =...

6
_Dimon_
1396 / 559 / 127
Регистрация: 31.10.2011
Сообщений: 1,955
23.04.2013, 14:20 2
так приведи код тригера, а заодно скажи с какой БД работаешь
0
Mmaaxx
1 / 1 / 0
Регистрация: 28.02.2012
Сообщений: 18
23.04.2013, 22:24  [ТС] 3
Цитата Сообщение от _Dimon_ Посмотреть сообщение
так приведи код тригера, а заодно скажи с какой БД работаешь
работаю с Firebird
SQL
1
2
3
4
5
6
7
CREATE OR ALTER TRIGGER reader_id FOR reader
active BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.RD_ID IS NULL) THEN
    NEW.RD_ID = GEN_ID(GEN_READER_ID,1);
END
0
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
23.04.2013, 22:33 4
Mmaaxx, поясните, пожалуйста, для тех кто в танке: какая практическая польза от такого рода тригера по сравнению с использованием обычного уникального автоинкремента?
2
Mmaaxx
1 / 1 / 0
Регистрация: 28.02.2012
Сообщений: 18
23.04.2013, 23:41  [ТС] 5
Ну в танке тут не Вы, а я) Загуглил, спасибо за наводку.
Со своей проблемой тоже разобрался http://www.ibase.ru/devinfo/generator.htm
Пункт про триггеры, второе примечание
1
The_Immortal
1560 / 496 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
24.04.2013, 00:24 6
Mmaaxx, ой, а можно узнать конкретное решение???

Цитата Сообщение от Mmaaxx Посмотреть сообщение
Ну в танке тут не Вы, а я)
Я все-таки настаиваю: в танке именно я Ибо с FB/IB я уже давно работал, а там (IB Expert) ведь при указании типа поля "Auto increment" автоматически создается и тригер, и генератор. Ну это уже другой вопрос на самом деле

По поводу изначальной проблемы наткнулся на следующее:
Оказывается, что Interbase триггер "before insert" срабатывает только после того, как запись "запостится" из Delphi приложения. В связи с чем становится невозможным увеличение автоинкрементальных ключевых полей. Есть решение?

Большинство программистов решило эту проблему созданием хранимой процедуры (stored procedure), позволяющей от InterBase получить следующий номер и поместить его в вашу запись посредством метода onBeforePost или onNewRecord.
Что, скорее всего, справедливо и для связки "C++ Builder && FB".
0
_Dimon_
1396 / 559 / 127
Регистрация: 31.10.2011
Сообщений: 1,955
24.04.2013, 03:01 7
есть еще триггеры INSTEAD OF
1
24.04.2013, 03:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2013, 03:01

Проблемы с Windows 7
подскажите что это за ошибка в windows XP все работает, а в windows 7...

Проблемы с массивами в С
Вопрос такой - Я работаю в ТС под ДОС, у меня есть 2-мерный float массив AI,...

Проблемы с циклом for
Добро времени суток. В мемо заношу имена. Процедура возвращает места проживания...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru