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

Вниз

Связь master/detail таблиц с автоинк-идентификатором   Найти похожие ветки 

 
ikhodov   (2003-09-01 11:59) [0]

Привет! Может кто-то знает, как решить такую проблему:
Есть master-таблица с автоинк идентификатором. Когда в нее вставляем запись, нужно тут-же добавить запись и в detail-таблицу. detail-таблица ссылается на master, но, поскольку, запись в master еще не занесена в БД, то там NULL, и мы не знаем, что вставлять в запись в detail таблице, чтобы она ссылалась на master.
Можно было-бы post-нуть запись в master-e, но используется BatchUpdate, и она ждет заполнения всех записей в detail, прежде, чем закинуть все в БД.


 
Reindeer Moss Eater   (2003-09-01 12:08) [1]

stored procedure + TUpdateSQL


 
Nikolay M.   (2003-09-01 13:20) [2]

http://rsdn.ru/article/db/midas_migration.xml#XSLTSECTION124143120120


 
АлексейК   (2003-09-01 13:47) [3]

В передлах хранимой процедуры всегда можно узнать, какое id получилось при вставке
SET @new_id=(SELECT id FROM tb_xxx WHERE id=SCOPE_IDENTITY())
А там уж либо id пересылать на клиента, либо вставлять в detail в этой же процедуре


 
GRAND   (2003-09-01 14:37) [4]

В FIBPlus такого гемора нет, повторяю еще раз и не устану повторять.
Если же используется IBX, то значение ID"а становится доступным после рефреша мастер-таблицы. Посему я всегда после Post вызывал Refresh, если мне надо было сразу после мастера что-то добавить еще и в деталь.


 
MMF   (2003-09-01 14:45) [5]

>GRAND © (01.09.03 14:37) [4]
А если тебе нужно откатить после этого (пользователь начал вводить документ, заполнил шапку и передумал), что ты делаешь?


 
GRAND   (2003-09-01 14:49) [6]

>MMF © (01.09.03 14:45) [5]
А причем тут? Я рекомендую всего лишь делать Refresh после Post и все. Если юзер постанул, то значит запись уже есть, и она освежается, а если нет - пусть канселит, если передумал.


 
DenK_vrtz   (2003-09-01 14:58) [7]

MMF ©, а операция удаления считается уголовнонаказуемой?


 
MMF   (2003-09-01 15:10) [8]

>DenK_vrtz © (01.09.03 14:58) [7]
Вовсе нет, просто на мой взгляд нерационально записывать и удалять потом в случае отказа пользователя, ИМХО. Я для ввода такой связки (главный-подчиненный) написал класс Документ, который записывает все скопом в одной транзакции: и поля шапки и табличную часть после подтверждения пользователем ввода. До этого никаких изменений в базе не происходит.


 
ZrenBy   (2003-09-01 15:11) [9]

>>SET @new_id=(SELECT id FROM tb_xxx WHERE id=SCOPE_IDENTITY())

Класс !!!


 
Nikky   (2003-09-02 14:49) [10]

я бы так сделал

CREATE TRIGGER SomeTrigger ON [dbo].[MasterTable]
FOR INSERT
AS

insert into DetailTable (id_Link) select id from inserted

go


 
Nikky   (2003-09-02 15:16) [11]


> АлексейК (01.09.03 13:47) [3]
> SET @new_id=(SELECT id FROM tb_xxx WHERE id=SCOPE_IDENTITY())


это, конечно, шедевр программистской мысли.. интересно, а scope_identity (), по-вашему, не то ли самое @new_id, которое вы столь хитрым образом получаете?



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

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

Наверх




Память: 0.46 MB
Время: 0.011 c
3-82060
Alik$
2003-08-22 15:47
2003.09.25
Report как создать свою форму для принтера


14-82451
Владимир Мунякин
2003-09-08 04:39
2003.09.25
О скоростном модеме разработанными Белорусами


1-82234
Nur
2003-09-10 06:28
2003.09.25
Национальная кодировка


3-82075
NewD
2003-09-05 13:48
2003.09.25
ADODATASET выдает ошибку при установке в clUseServer


4-82554
dimonka
2003-07-22 16:58
2003.09.25
Как завершить приложение





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский