| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > violation of FOREIGN KEY |
| Автор: KiSH333 17.2.2009, 14:52 |
| Привет всем! у меня возникла проблема с синхронизацией БД! при синхр вылетает ошибка violation of FOREIGN KEY constraint "RELATIONOSWITHGU" т.к. это DLLка то тестировать оч трудно, подскажите на что может это ругаться, просто не пойму в каком направлении рыть. |
| Автор: Akella 17.2.2009, 15:36 |
Если ты используешь, так сказать, таблицы- справочники, то тебе в первую очередь нужно сделать так, чтобы заполнялись они, а потом уж и главные таблицы. Т.е. смотри, какая у тебя привязка по внешним ключам, в таком порядке и добавляй данные в таблицы. А то ты в главную таблицу добавляешь запись, которая ссылается на запись в другой таблице, а в другой таблице пока что такой записи нет. Добавлено через 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 | ||
Зачем её искать? Ссылочную целостность обеспечивает твой внешний ключ "RELATIONOSWITHGU". Вот поэтому-то сервак тебя и пинает за то, что НЕТ ССЫЛКИ записи из главной таблицы на запись в подчинённую таблицу. Ты так и не понял. Прочти внимательно и несколько раз опять моё сообщение.
|
| Автор: Akella 19.2.2009, 01:04 | ||||||
| Смотри, допустим есть 2 таблицы: главная и подчинённая. Главная: ID, Name, id_detail Подчинённая: ID, Name есть между ними внешний ключ по полям: id(подчинённая) и id_detail(главная). Такая вот связь, внешний ключ, ссылочная целостность. Допустим, что в подчинённой есть 2 записи:
теперь ты вставляешь запись в главную
Обрати внимание на 12!!! Если выполнить такой код, то у тебя получится, что ты будешь вставлять запись с ID_DETAIL= 12, а записи с ID = 12 в подчинённой таблице нет, не на что ссылаться. Понимаешь о чём я? Добавлено через 2 минуты и 42 секунды Т.е., чтобы не было у тебя ошибки, перед добавлением записи в главную таблицу, тебе нужно добавить запись с ID = 12 в подчинённую
|
| Автор: KiSH333 19.2.2009, 09:00 |
| Akella, это что ж получается, что я в главную таблицу не могу добавить запись, даже если в подчиненной пока что нет ни чего??? Т.е. из твоего примера, когда ты добавляешь Должность "Менеджеров", грубо говоря, я не могу добавить сегодня, когда штат будет формироваться через месяц к примеру? Я думал что если в дочерней нет записей пока, ее смело можно добавлять сразу в главную? |
| Автор: Akella 19.2.2009, 12:34 |
| давляй с id_detail = null |