Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > violation of FOREIGN KEY


Автор: KiSH333 17.2.2009, 14:52
Привет всем! у меня возникла проблема с синхронизацией БД!
при синхр вылетает ошибка 
violation of FOREIGN KEY constraint "RELATIONOSWITHGU"
т.к. это DLLка то тестировать оч трудно, подскажите на что может это ругаться, просто не пойму в каком направлении рыть. 

Автор: Frees 17.2.2009, 15:06
Цитата(KiSH333 @  17.2.2009,  16:52 Найти цитируемый пост)
т.к. это DLLка то тестировать оч трудно, подскажите на что может это ругаться, просто не пойму в каком направлении рыть. 

а в чем проблема? укажи приложение которое ее грузит и отлаживай как обычно

Добавлено через 1 минуту и 31 секунду
Run -> parametrs -> Host Application

Автор: Akella 17.2.2009, 15:36
Цитата(KiSH333 @  17.2.2009,  14:52 Найти цитируемый пост)
violation of FOREIGN KEY constraint "RELATIONOSWITHGU"

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

Добавлено через 8 минут и 42 секунды
http://ru.wikipedia.org/wiki/%D0%A1%D1%81%D1%8B%D0%BB%D0%BE%D1%87%D0%BD%D0%B0%D1%8F_%D1%86%D0%B5%D0%BB%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C

Автор: KiSH333 18.2.2009, 11:58
Akella, спс за коммент... начал смотреть что к чему и нарушения целостности чет не могу найти!

http://www.radikal.ru

Есть вторая база, основная которая синхронизируется с другой. В основной также в табличке ОS я добавил новую запись, ни как она условиям не противоречит но сейчас не идет синхронизация. Ошибку я писал выше violation of FOREIGN KEY constraint "RELATION OS WITH GU"
Так же выше привел зависимость OS от GU, посмотрел тоже вроди условиям не противоречит. Добавил даже в ручную, точно такую же запись в нее, но все равно тоже самое!

вот такая вот беда))

Автор: Akella 19.2.2009, 00:47
Цитата(KiSH333 @  18.2.2009,  11:58 Найти цитируемый пост)
нарушения целостности чет не могу найти!

Зачем её  искать? Ссылочную целостность обеспечивает твой внешний ключ "RELATIONOSWITHGU". Вот поэтому-то сервак тебя и пинает за то, что НЕТ ССЫЛКИ записи из главной таблицы на запись в подчинённую таблицу.


Ты так и не понял. Прочти внимательно и несколько раз опять моё сообщение.
Цитата(Akella @  17.2.2009,  15:36 Найти цитируемый пост)
ты в главную таблицу добавляешь запись, которая ссылается на запись в другой таблице, а в другой таблице пока что такой записи нет.





Автор: Akella 19.2.2009, 01:04
Смотри, допустим есть 2 таблицы: главная и подчинённая.
Главная: ID, Name, id_detail
Подчинённая: ID, Name

есть между ними внешний ключ по полям: id(подчинённая) и id_detail(главная). Такая вот связь, внешний ключ, ссылочная целостность.

Допустим, что в подчинённой есть 2 записи:
Цитата

ID   |   NAME
----------------
10   | ВАСЯ
11   | КЛАВА


теперь ты вставляешь запись в главную

Код

insert into main_table (ID, NAME, ID_DETAIL) values (1532, 'Менеджеры', 12)


Обрати внимание на 12!!! Если выполнить такой код, то у тебя получится, что ты будешь вставлять запись с ID_DETAIL= 12, а записи с ID = 12 в подчинённой таблице нет, не на что ссылаться. Понимаешь о чём я?

Добавлено через 2 минуты и 42 секунды
Т.е., чтобы не было у тебя ошибки, перед добавлением записи в главную таблицу, тебе нужно добавить запись с ID = 12 в подчинённую
Код

insert into detail_table (ID, NAME) values (12, 'КОЛЯ')

Автор: KiSH333 19.2.2009, 09:00
Akella, это что ж получается, что я в главную таблицу не могу добавить запись, даже если в подчиненной пока что нет ни чего???

Т.е. из твоего примера, когда ты добавляешь Должность "Менеджеров", грубо говоря, я не могу добавить сегодня, когда штат будет формироваться через месяц к примеру? 

Я думал что если в дочерней нет записей пока, ее смело можно добавлять сразу в главную?

Автор: Akella 19.2.2009, 12:34
давляй с id_detail = null

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)