Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

InterBase-Generator-Trigger. Как узнать сгенерированный номер? [D7, IB6.x]


DmitrichJ ©   (2007-02-24 22:02:00) 

Доброе время суток, мастера. Подскажите пожалуйста. В БД есть теблици, в а таблеце поле NP (включён генератор и триггер) в котором генерируется номер записи при добавлении. Подскажите пожалуйста как узнать номер который он сгенерировал после команты INSERT... ? Спасибо.


Sergey13   (2007-02-27 08:18:00) [1]

> [18] Виталий Панасенко ©   (26.02.07 17:23)

Returning из Insert-а что-ли реализовали? Так это разработчики наверное в Оракле подсмотрели. 8-)
Это просто небольшое удобство, т.к. посмотреть можно было и раньше и... какие уж тут извороты.

Впрочем "спор" ни о чем. Я завязываю.


Виталий Панасенко   (2007-02-26 17:23:00) [2]


> Sergey13 ©   (26.02.07 15:37) [17]
> > [16] Виталий Панасенко ©   (26.02.07 14:38)
>
> Если понимать, что и как работает, то и поторашки с ИБХ-
> ом выше головы хватает.
> Или юзать Оракл - всяко круче.  8-)

Суть не в том, кто круче, а в том, что в "двойке" это реализовано - можно узнать, что подставил триггер...без всяких изворотов...


Sergey13   (2007-02-26 15:37:00) [3]

> [16] Виталий Панасенко ©   (26.02.07 14:38)

Если понимать, что и как работает, то и поторашки с ИБХ-ом выше головы хватает.
Или юзать Оракл - всяко круче.  8-)


Виталий Панасенко   (2007-02-26 14:38:00) [4]

использовать FireBird 2.x и не морочить голову(ну, и FIBPlus(может, еще какие компоненты умеют это))...


Sergey13   (2007-02-26 13:22:00) [5]

> [14] DrPass ©   (26.02.07 13:10)

> Если логика работы приложения предусматривает

Сегодня не предусматривает, завтра будет предусматривать. Предусмотреть, что будет предусматривать завтра - и есть профессионализм.


DrPass   (2007-02-26 13:10:00) [6]


> Триггер убирать не нужно. Гораздо удобнее и гибче включить
> в триггер проверку

Разве это удобнее? Наоборот, только помешает вылавливать глюки в приложении. Если логика работы приложения предусматривает "альтернативные" способы ввода данных (например, некий скрипт (с)), то да, так стоит сделать.
Если же не предусматривает, то городить ненужный код "на всякий случай" - вредное занятие


Desdechado   (2007-02-26 12:03:00) [7]

Триггер убирать не нужно. Гораздо удобнее и гибче включить в триггер проверку:
IF( new.fld_id IS NULL ) THEN -- или проверку на значение, считающееся пустым, например 0
 new.fld_id = gen_id( gen, 1 );

Тогда при "правильных" вставках будет работать ваш собственный механизм, а при "неправильных" (например, некий скрипт) - триггер.


Johnmen   (2007-02-25 14:10:00) [8]


> Antoxa2005   (25.02.07 10:54) [11]

А тебя на бис не вызывали.


Antoxa2005   (2007-02-25 10:54:00) [9]

Получи значение генератора и при добавлении сам вставь полученное значение в ключевое поле таблицы, а тригер не используй.


Johnmen   (2007-02-24 23:59:00) [10]

Давай ещё разок, на бис...


DmitrichJ   (2007-02-24 23:28:00) [11]

тьфу. Не использовать триггер. сорри


DmitrichJ   (2007-02-24 23:28:00) [12]

тьфу. Не использовать триггер. сорри


DmitrichJ   (2007-02-24 22:42:00) [13]

Приятно иметь дело с профессионалами. Просто ненужно использовать триггер и добавлять с помощью генератора вручную. Всем спасибо!


DrPass   (2007-02-24 22:41:00) [14]


> DmitrichJ   (24.02.07 22:23) [4]

Хм... ну так сам подумай-то. Если тебе не подходит применяемый алгоритм, тогда что делать-то надо? Правильно, изменить алгоритм. Убери триггер, выцепи значение генератора (либо в программу, либо в хранимую процедуру) и вставляй его в нужные тебе таблицы


DmitrichJ   (2007-02-24 22:28:00) [15]

Johnmen, хм.


DmitrichJ   (2007-02-24 22:23:00) [16]

Может стоит задать вопрос по-другому. Генерируется номер и добавляется запись. После чего нужно в другую таблицу добавить запись с таким же номером!


Johnmen   (2007-02-24 22:22:00) [17]

Никак.
Но ты не расстраивайся, ибо правильные пацаны так не делают, если хотят знать. А как они делают - доступно изложено на ibase.ru


Виталий Панасенко   (2007-02-24 22:10:00) [18]

никак...


Виталий Панасенко   (2007-02-24 22:10:00) [19]

только сделав полную выборку по-новому


Наверх

Титульная страница Поиск, карта сайта Написать письмо