Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.25;
Скачать: CL | DM;

Вниз

Связь 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
3-82163
Centurion
2003-09-03 11:50
2003.09.25
Реиндексация парадоксовской БД


14-82494
Mike Kouzmine
2003-09-05 12:01
2003.09.25
Все что русские делают руками - покупать нельзя. Однозначно.


1-82298
Pomashok
2003-09-14 17:32
2003.09.25
Перекодировка


14-82456
Nik8.
2003-09-08 00:48
2003.09.25
help


6-82367
NetKnight
2003-07-19 23:46
2003.09.25
List в HTTP протоколе