Вниз
Скачать: CL | DM;

IBx - Master & Detail   Найти похожие ветки 

 
Normal   (2002-05-17 13:44) [0]

Вот такой вопро - есть две таблицы, связанные как Master & Details. Такой вопрос - добавляю в detail таблицу запись. А как обеспечить значение foreign ключа ? В триггере почему-то ругается, когда ему говорят :
NEW.IdSecond = MASTER.IdSecond
Как сие разрулить ?


 
Desdechado ©   (2002-05-17 15:13) [1]

дык, запись должна добавляться с конкретным ключом из Master, а не с каким-попало. Поэтому это присваивается не в триггере, а в операторе добавления записи.


 
Normal   (2002-05-17 15:29) [2]

Дык а как его узнать-то конкретный ключ ? Select max(idsecond) from master ? так что ли ?


 
Val ©   (2002-05-17 16:06) [3]

причем тут max..? вы ведь запись в дочерней таблице к какой-то конкретной мастер-записи создаете, а не к последней? Так из нее (конкретной)и берите этот самый ID. Запросы для чего?


 
Desdechado ©   (2002-05-17 19:05) [4]

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

вот и сформулируй теперь вопрос по-новому


 
normal   (2002-05-18 07:48) [5]

Хорошо. Предположим я добавил записи в Master. Их скажем 10. Теперь мне нужно добавить 2 записи в Detail, ориентируясь на запись 3 в Master. Теперь я добавляю запись в Detail. Соответственно, чтобы обеспечить целостность, я должен указать в качестве значения вторичного ключа в Detail значение ключа в Master, которое соответствует записи N 3. Средствами Delphi это просто - Detail.OnNewRecord : DetailIdSecond.AsInteger := MasterIdSecond.Value. А как это сделать на самом сервере IB ???


 
Johnmen ©   (2002-05-18 09:11) [6]

Никак, поскольку в базе нет никаких взаимосвязей (кроме ограничения целостности) между двумя таблицами !
Такие всаимоствязи (Master-Detail) всегда организуются в приложении.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.008 c
1-30824
Aleksandr
2002-05-31 12:03
2002.06.10
Можно ли у TMemo или TRichEdit перекрыть прорисовку?


6-30940
capo
2002-03-29 18:18
2002.06.10
Telnet


1-30780
Олег Лаукарт
2002-05-30 21:11
2002.06.10
Как включить в проект пакет (bpl)


1-30777
Danger
2002-05-30 23:40
2002.06.10
Работа с Вордовскими файлами(doc)


1-30820
$Hic0
2002-05-31 12:10
2002.06.10
Прием массива в DLL....




   Наверх