![]() |
| ||
|
|
Новости |
Поиск |
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".
Кто небуд сталкивался с такой проблемой?
Для того чтобы был понятнее могу выслать код с базой. Вчера с утра до вечера посидел решая эту проблему, но никак не вышло. Как можно сделат связь правилно. Если можно дайти простой пример. В хелпах Делфи покапался, но непонял.
DSKalugin (2005-07-05 17:33:00) [1]Я ему уже выслал исправленный и работающий исходник.
Сильно не судите, человек только начинает вникать в суть, надо помочь с азами
Ярослав (2005-07-05 09:32:00) [2]>> Anatoly Podgoretsky © (05.07.05 09:21) [29]
Я конечно понимаю что гораздо лучше когда человек сам добиваеться цели, но все же иногда можно и так
Anatoly Podgoretsky (2005-07-05 09:21:00) [3]Ярослав (05.07.05 09:13) [28]
Ты это называешь помощью :-)
Ярослав (2005-07-05 09:13:00) [4]>> Anatoly Podgoretsky © (05.07.05 08:56) [27]
Я то? А как же, надо же людям помогать иногда, просто мне так легче чем допытываться из человека что там у него не так
Anatoly Podgoretsky (2005-07-05 08:56:00) [5]Ярослав (05.07.05 06:27) [26]
Добрый Санта Клаус
Ярослав (2005-07-05 06:27:00) [6]>> Xmen (04.07.05 14:34) [25]
Чем гадать кинь мне весь проект на мыло
Xmen (2005-07-04 14:34:00) [7]ID поле таблицы MAIN первычный ключ, и он создаётся генератором, тоесть автоинкременант.
А разве нужно установит в других таблицах первычный ключ, и это как повляеет на событя. Я пробовал ставить первычные ключа к другим таблицам, но в моём случае нечего не изменил. Я обчно работаю с базами и создаю их в проге ИБЭкспрес, ключи тоже внем создавал, по моему внем недолжен быт ошибка.
2Ярослав (04.07.05 13:19) [20]
Обесни еще попроше, если вопросы есть на уточнения то задавай.
Anatoly Podgoretsky (2005-07-04 14:00:00) [8]Stakan © (04.07.05 13:59) [23]
Гм, а мне показалось, что было безаппеляционное утверждение, я рад что не так.
Stakan (2005-07-04 13:59:00) [9]Anatoly Podgoretsky © (04.07.05 13:54) [22]
Согласен с Вами, могу лишь заметить, что я ни на чём не настаивал, а лишь высказывал своё скромное мнение о том, что следует избегать по возможности изменения первичного ключа.
Anatoly Podgoretsky (2005-07-04 13:54:00) [10]Первичный ключ это ключ однозначно идентифицирующий запись в таблице и никаких обязательств в теории баз данных по его неизменности нет, более того настаивать на этом граничит немного с некомпетентностью. Стоит менять или нет определяется только задачей.
Stakan (2005-07-04 13:32:00) [11]Anatoly Podgoretsky © (04.07.05 13:15) [19]
> Ты не высказывал мнения, а только религиозное
> убеждение - догмат веры
При чём здесь религия, я как раз высказал мнение.
> Насчет уникальности - это где же ты видел не
> уникальные первичные ключи? Что за база такая странная?
Я как раз и сказал см. [6], что в таблице DATA1 отсутствует первичный ключ, что может привести к неуникальности значений в этой таблице.
> Данная настройка позволяет сохранить ссылочную
> целостность в случае изменения поля связи и это ее
> назначение, такая возможность есть во всех серверах и
> требуется стандартов.
Согласен, но я считаю что поле ID таблицы MAIN изменять не стоит, так как это первичный ключ.
Ярослав (2005-07-04 13:19:00) [12]>> Xmen (04.07.05 12:49) [17]
Ну вот ты и проверь в каком обработчике добавления новой записи, кокой из таблиц ты ID главной присваеваешь а то если при вставке в DATA2 ты делаешь qrData1['Data1_id']:=qrMain['id']; т.е. также как и при вставке в DATA1 то это мало чем поможет
Так же qrData1 вовсе не означает что ты вставляешь в DATA1
проверь SQL qrData1 и наверное qrData2 если он у тебя есть
Anatoly Podgoretsky (2005-07-04 13:15:00) [13]Stakan © (04.07.05 12:44) [15]
Ты не высказывал мнения, а только религиозное убеждение - догмат веры.
Насчет уникальности - это где же ты видел не уникальные первичные ключи? Что за база такая странная?
Данная настройка позволяет сохранить ссылочную целостность в случае изменения поля связи и это ее назначение, такая возможность есть во всех серверах и требуется стандартов.
Anatoly Podgoretsky (2005-07-04 13:12:00) [14]Xmen (04.07.05 12:49) [17]
Поддержка по электронной почте не обеспечивается и не акредитированя почта не принимается, а ответы я даю только в конференциях, при наличии желания.
Хьут (2005-07-04 12:49:00) [15]Удалено модератором
Xmen (2005-07-04 12:49:00) [16]2Ярослав (04.07.05 12:08) [13]
У меня вобшета 3 таблицы, я проста не упоменул 3ю иза того что он таже похож на 2го
CREATE TABLE DATA2 (
DATA2_ID INTEGER,
ZNACH1 INTEGER,
ZNACH2 VARCHAR(10)
);
ALTER TABLE DATA2 ADD CONSTRAINT FK_DATA2 FOREIGN KEY (DATA2_ID) REFERENCES MAIN (ID) ON DELETE CASCADE ON UPDATE CASCADE;
2Anatoly Podgoretsky ©
Я вам в суботу отправил через маил письмо с кодом. Но не получил ответа. Если можно ответти пожалуста.
Stakan (2005-07-04 12:44:00) [17]Anatoly Podgoretsky © (04.07.05 12:26) [14]
Как мне кажется все на этом форуме высказывают лишь собственное мнение, на абсолютную истину никто не претендует. Что касается данного случая, то аргументы в поддержку моего мнения очевидны - неуникальность данных в подчинённой таблице, что противоречит теории РСУБД.
Anatoly Podgoretsky (2005-07-04 12:26:00) [18]Stakan © (04.07.05 11:58) [12]
То есть только твои личные неприязни, сущность оказывается не при чем.
Ярослав (2005-07-04 12:08:00) [19]>> Xmen (04.07.05 11:52) [9]
Интересно в определении таблиц у тебя ни слова о DATA2 а в ошибке
violation of foregn key constraint "FK_DATA2" on table "DATA2"
в общем какую то DATE2 таблицу упоминает...
Может ты чего то не договариваешь?
Stakan (2005-07-04 11:58:00) [20]Anatoly Podgoretsky © (04.07.05 11:54) [11]
ИМХО не стоит так делать.