![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
уникальный номер записи
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()