Проблема с Foreign Key

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
sterh
Сообщения: 2
Зарегистрирован: 19 дек 2009, 15:24

Проблема с Foreign Key

Сообщение sterh » 19 дек 2009, 15:31

Всем доброго времени суток. Перейду сразу к делу. Есть база в ней таблицы: Оплата и декларация
1.

Код: Выделить всё

CREATE TABLE "OPLATA" 
(
  "DATAOPLATA"	DATE NOT NULL,
  "SUMMOPLATA"	INTEGER NOT NULL,
  "ID_OPLATA"	INTEGER NOT NULL,
  "NUMDEKL"	INTEGER NOT NULL,
  "ID_NALOGOPLAT"	VARCHAR(7) NOT NULL,
  "KODNALOG"	INTEGER NOT NULL,
 PRIMARY KEY ("ID_OPLATA")
);
ALTER TABLE "OPLATA" ADD FOREIGN KEY ("ID_NALOGOPLAT") REFERENCES NALOGPLAT ("RNN") ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE "OPLATA" ADD FOREIGN KEY ("ID_OPLATA") REFERENCES SPOSOBOPLATA ("NUMCHEK") ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE "OPLATA" ADD FOREIGN KEY ("KODNALOG") REFERENCES NALOG ("KODNALOG") ON UPDATE CASCADE ON DELETE CASCADE;
2.

Код: Выделить всё

CREATE TABLE "NALOGDEKL" 
(
  "NUMDEKL"	INTEGER NOT NULL,
  "VIDDEKL"	"DEKL_VID" NOT NULL,
  "DATEZAP"	DATE NOT NULL,
  "ID_NALOGOPLAT"	VARCHAR(7) NOT NULL,
 PRIMARY KEY ("NUMDEKL")
);
ALTER TABLE "NALOGDEKL" ADD FOREIGN KEY ("NUMDEKL") REFERENCES OPLATA ("ID_OPLATA") ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE "NALOGDEKL" ADD FOREIGN KEY ("ID_NALOGOPLAT") REFERENCES NALOGPLAT ("RNN") ON UPDATE CASCADE ON DELETE CASCADE;
При попытке заполнения таблиц данными выскакивает исключение:violation of FOREIGN KEY constraint "INTEG_54" on table NALOGDEKL, при заполнении таблицы декларация, и violation of FOREIGN KEY constraint "INTEG_54" on table OPLATA, при заполнении таблицы оплата.
Что делать в данном случае?
Спасибо.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Проблема с Foreign Key

Сообщение kdv » 20 дек 2009, 00:00

надеюсь, ответили на sql.ru

sterh
Сообщения: 2
Зарегистрирован: 19 дек 2009, 15:24

Re: Проблема с Foreign Key

Сообщение sterh » 20 дек 2009, 18:03

>надеюсь, ответили на sql.ru
Да, спасибо ответили, но возникла еще одна небольшая проблемка, при добавлении первичного ключа к таблице возникает ошибка:
Attempt to store duplicate value (visible to active transactions) in unique index "RDB$PRIMARY84"
null segment of UNIQUE KEY

Что с этим можно сделать?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Проблема с Foreign Key

Сообщение kdv » 20 дек 2009, 21:25

Что с этим можно сделать?
программу правильно написать. Вам же сервер человеческим языком говорит, что Вы пытаетесь запихнуть дубля или null в столбец первичного ключа какой-то там таблицы. Ищите, на какой таблице по ПК построен RDB$PRIMARY84.

Еще есть подозрение, что Вы не умеете пользоваться отладчиком. Ошибка наверняка происходит в конкретном месте при конкретном действии. В чем проблема посмотреть, куда и что вставляется, что приводит к этой ошибке?

Ответить