![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
master-detail [D6, IB6.x]
Xmen © (2005-07-04 09:59:00)Привет всем!!!
Вот хотел сделать связь master-detail, вроде бы получилось связь установлен и когда ввожу данные то все ОК но когда хотел сохранить данные даёт ошибку 'violation of foregn key constraint "FK_DATA2" on table "DATA2".
Кто небуд сталкивался с такой проблемой?
Для того чтобы был понятнее могу выслать код с базой. Вчера с утра до вечера посидел решая эту проблему, но никак не вышло. Как можно сделат связь правилно. Если можно дайти простой пример. В хелпах Делфи покапался, но непонял.
Anatoly Podgoretsky (2005-07-04 11:54:00) [21]Stakan © (04.07.05 11:33) [6]
Что тебя так сильно испугало?
Ярослав (2005-07-04 11:53:00) [22]>> Stakan © (04.07.05 11:39) [8]
Ну тогда понятно
Xmen (2005-07-04 11:52:00) [23]2Ярослав (04.07.05 11:33) [5]
А когда вносишь запись в подчиненную таблицу, ID главной ей не забываешь присваивать?
В проги для этого делаю
procedure TForm1.qrData1NewRecord(DataSet: TDataSet);
begin
qrData1['Data1_id']:=qrMain['id'];
end;
Stakan (2005-07-04 11:39:00) [24]Ярослав (04.07.05 11:35) [7]
Это я не про ошибку, а вообще.
Про ошибку я уже сказал, очевидно, что при добавлении в табл. DATA1, DATA1_ID не совпадает ни с одним ID из табл. MAIN
Ярослав (2005-07-04 11:35:00) [25]>> Stakan © (04.07.05 11:33) [6]
??? Причем тут это?
Stakan (2005-07-04 11:33:00) [26]Xmen (04.07.05 11:28) [3]
А почему в таблице DATA1 нет первичного ключа?
И зачем on update cascade? Ты что собираешся менять перв. ключ в MAIN?
Ярослав (2005-07-04 11:33:00) [27]А когда вносишь запись в подчиненную таблицу, ID главной ей не забываешь присваивать?
Digitman (2005-07-04 11:31:00) [28]
> Кто небуд сталкивался с такой проблемой?
Кто Небуд - он точно сталкивался.
Он с чем только не сталкивался
Xmen (2005-07-04 11:28:00) [29]2Johnmen © (04.07.05 10:05) [1]
Если уж и в хелпах не понял, то давание простого примера не поможет...:)
Проста в ..DB\IBX\.. примеры сложные на первы раз(может для меня). Поэтому нужен простой пример.
2Stakan ©
у меня база такая:
CREATE TABLE MAIN (
ID INTEGER,
ZNACH1 INTEGER,
ZNACH2 VARCHAR(10)
);
ALTER TABLE MAIN ADD CONSTRAINT PK_MAIN PRIMARY KEY (ID);
CREATE TABLE DATA1 (
DATA1_ID INTEGER,
ZNACH1 INTEGER,
ZNACH2 VARCHAR(10)
);
ALTER TABLE DATA1 ADD CONSTRAINT FK_DATA1 FOREIGN KEY (DATA1_ID) REFERENCES MAIN (ID) ON DELETE CASCADE ON UPDATE CASCADE;
Может в проге ошибка, может посмотрите код?
Stakan (2005-07-04 10:10:00) [30]В подчинённой таблице в поле, по которому связь с родительской, должно быть значение поля из родительской таблицы (то поле, которое указано во внешнем ключе).
Например:
ALTER TABLE DATA1 ADD CONSTRAINT FK_DATA2 FOREIGN KEY (DATA2_ID) REFERENCES DATA2 (ID)
Это значит, что в таблице DATA1 в поле DATA2_ID должно быть значение из поля ID таблицы DATA2
Johnmen (2005-07-04 10:05:00) [31]Если уж и в хелпах не понял, то давание простого примера не поможет...:)