Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];

Вниз

уникальный номер записи   Найти похожие ветки 

 
snake1977   (2004-08-11 15:43) [0]

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


 
Наталия ©   (2004-08-11 15:45) [1]

Узнать его до добавления записи. На клиенте. Присвоить тоже там же, а не в триггере.


 
Sergey13 ©   (2004-08-11 15:45) [2]

БД?
Можно до вставки узнавать этот номер.


 
Ega23 ©   (2004-08-11 15:50) [3]

для 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()



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

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


 
snake1977   (2004-08-12 08:25) [5]

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


 
Ильш ©   (2004-08-12 08:42) [6]

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


 
Anatoly Podgoretsky ©   (2004-08-12 08:45) [7]

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


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

select gen_id(generator_name,1) from rdb$database


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

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

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


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

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


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

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


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

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

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


 
Sergey13 ©   (2004-08-12 09:21) [13]

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


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

>snake1977

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

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

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


 
Anatoly Podgoretsky ©   (2004-08-12 09:44) [15]

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


 
Sergey13 ©   (2004-08-12 09:54) [16]

>[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-)


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

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


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

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


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

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


 
Sergey13 ©   (2004-08-12 14:39) [20]

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


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

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


 
Sergey13 ©   (2004-08-12 14:48) [22]

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.044 c
4-1090495731
@lex@nder
2004-07-22 15:28
2004.09.05
Запись CD


1-1093075900
MaxN
2004-08-21 12:11
2004.09.05
QuickReport


3-1092146946
Koala
2004-08-10 18:09
2004.09.05
Как записать в поле даты - Null


1-1092677011
AlexZ
2004-08-16 21:23
2004.09.05
external variable | {$L MyFile.obj}


1-1093019568
начинающий
2004-08-20 20:32
2004.09.05
Ctl3D





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский