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

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

уникальный номер записи


Страницы:   1 2

snake1977 ©   (2004-08-11 15:43:00) 

Здравствуйте! есть две таблицы свзяанные между собой уникальным номером. уникальный номер создается генератором в тригере. Т.е. при добавлении записи триггер заносит уникальный номер автоматически.
Исходя из этого возникает вопрос, если в программе требейтся автоматически заполнить данные таблицы, то после вставки новой записи в главную таблицу не известно какой номер ей присвоил триггер, и сл-но невозможно заполнить этот номер в подчиненной. как узнать какой номер триггер добавил новой записи??


Sergey13   (2004-08-12 14:48:00) [1]

2[21] Наталия ©   (12.08.04 14:43)
ХХХХХХХХХХХХХХХХХ
Это я замолчал. 8-)


Наталия   (2004-08-12 14:43:00) [2]

Будем обсуждать АП? :))
Между прочим, говорить о присутствующих в третьем лице нетактично. :)))


Sergey13   (2004-08-12 14:39:00) [3]

2[19] Наталия ©   (12.08.04 14:33)
Т.е. АП мужененавистник? Или женолюб? 8-)


Наталия   (2004-08-12 14:33:00) [4]

Sergey13 ©   (12.08.04 09:10) [10]
Обычная дискриминация, хи-хи-хи :))


Соловьев   (2004-08-12 11:29:00) [5]

прочитайте внимателно [11] - и Вы лишите себя многих нэгараздив:)


snake1977   (2004-08-12 11:28:00) [6]

>>Наталия ©  
спасибо за ответ, как грится - то что доктор прописал :)


Sergey13   (2004-08-12 09:54:00) [7]

>[7] Anatoly Podgoretsky ©   (12.08.04 08:45)
>Sergey13 ©   (11.08.04 15:45) [2]
>Нельзя до вставки его еще нет, только после вставки.

>[12] Anatoly Podgoretsky ©   (12.08.04 09:12)
>Sergey13 ©   (12.08.04 09:10) [10]
>С чего ты взял что у Наташи так,

Я и snake1977 это разные не только лица, но и люди вообще. 8-)


Anatoly Podgoretsky   (2004-08-12 09:44:00) [8]

Sergey13 ©   (12.08.04 09:21) [13]
А тебе не кажется, что ты совсем тут ни причем или snake1977 и
Sergey13 одно и тоже лицо, нехорошо тогда.


DenK_vrtz   (2004-08-12 09:23:00) [9]

>snake1977

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

>Anatoly Podgoretsky ©   (12.08.04 09:12) [12]

все имеет свой смысл!


Sergey13   (2004-08-12 09:21:00) [10]

2[12] Anatoly Podgoretsky ©   (12.08.04 09:12)
А тебе не кажется, что ты домысливаешь "мои" мысли по своему? Где я про все это писал? 8-)


Anatoly Podgoretsky   (2004-08-12 09:12:00) [11]

Sergey13 ©   (12.08.04 09:10) [10]
С чего ты взял что у Наташи так, у нее как раз наоборот, номер вносится не триггером из генератора, а получается на клиенте до вставки и вставляется с клиента в запись, а не триггером.

DenK_vrtz ©   (12.08.04 09:09) [9]
Потенциальный номер не имеет смысла, он так и остается потенциальным!


Соловьев   (2004-08-12 09:10:00) [12]

Если компоненты IBX, то для работы с наборами данных надо использовать IBDataSet, в котором есть два замечательных свойства - RefreshSQL и GeneratorField, которые и надо заполнить для правильной работы. 1-е свойство - выдаст согласно сгенерированному во 2-м свойстве уникального значения(желательно вешать на OnNew или OnPost) - данные которые могли измениться на сервере триггерами(не путать с тем триггером, который подставляет ПК)


Sergey13   (2004-08-12 09:10:00) [13]

2[7] Anatoly Podgoretsky ©   (12.08.04 08:45)
Не понял. Почему мне нельзя, а Наташе по ее методу можно? 8-)


DenK_vrtz   (2004-08-12 09:09:00) [14]

>Anatoly Podgoretsky ©   (12.08.04 08:45) [7]
>Нельзя до вставки его еще нет, только после вставки.

Физически нет, но потенциальный номер узнать можно.
Не случайно Sergey13 ©  спросил про СУБД.
При работе с последовательностями, если не используется механизм заполнения "дырок" и вставка данных в таблицу происходит с одного рабочего места, узнать следующее значение последовательности не составляет труда.


Наталия   (2004-08-12 08:46:00) [15]

select gen_id(generator_name,1) from rdb$database


Anatoly Podgoretsky   (2004-08-12 08:45:00) [16]

Sergey13 ©   (11.08.04 15:45) [2]
Нельзя до вставки его еще нет, только после вставки.
Если тебе нужен до вставки, то метод указан в Наталия ©   (11.08.04 15:45) [1]


Ильш   (2004-08-12 08:42:00) [17]

FIB замечательно все это обрабатывает и позволяет получать уникальный номер сразу


snake1977   (2004-08-12 08:25:00) [18]

СУБД - InterBase
т.е. вы предлагаете ручками заполнять его
а как узнать какой номер сгенерирует gen_id
?


Соловьев   (2004-08-11 15:51:00) [19]

СУБД какая и компонеты?


Ega23   (2004-08-11 15:50:00) [20]

для MSSQL:

1. Если не IDENTITY:

declare @X int
select @X=Max(Table1ID)+1 from Table1ID
insert into Table1 (Table1ID, ....)
values (@X, ....)


1. Если IDENTITY:

declare @X int
insert into Table1 (....)
values (....)
Select @X=@@IDENTITY

-- для MS SQL 2000 Select @X=SCOPE_IDENTITY()


Страницы:   1 2

Наверх

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