создание записи в БД (MySQL)

Модератор: Модераторы разделов

Аватара пользователя
MUTOgen
Сообщения: 343
Статус: i like the way you move
ОС: OpenSuse 11.1

создание записи в БД

Сообщение MUTOgen »

Доброго времени суток. Ребят, возник вопрос, никак его не могу решить... Есть базка. Маленькая. развернута вот таким вот образом:

Код:

CREATE TABLE producer ( prod_id int AUTO_INCREMENT NOT NULL, prod_name varchar(255) NOT NULL, tele varchar(255) NOT NULL, coun varchar(255) NOT NULL, city varchar(255) NOT NULL, addr varchar(255) NOT NULL, primary key(prod_id) ) engine=InnoDB character set=UTF8; CREATE TABLE prep ( id int AUTO_INCREMENT NOT NULL, name varchar(255) NOT NULL, prod_id int NOT NULL, cost int NOT NULL, PRIMARY KEY(id), FOREIGN KEY (prod_id) REFERENCES producer(prod_id) ON UPDATE CASCADE ) ENGINE=InnoDB CHARACTER SET=UTF8; CREATE TABLE nal ( id_n int AUTO_INCREMENT NOT NULL, how_much int NOT NULL, p_date datetime NOT NULL, id int NOT NULL, primary key(id_n), FOREIGN KEY (id) REFERENCES prep(id) ON UPDATE CASCADE ) engine=InnoDB character set=UTF8;


Суть дела в том что как видно связи между таблицами нацеплены как бы паровозом. Всего 2 связки prod_id и id. Вобщем проблемы возникают если я хочу добавить запись в таблицу prep таким вот образом: "insert into prep (name,prod_id,cost) values ('Мелатонин',1,125)" вываливается такая ошибка: Cannot add or update a child row: a foreign key constraint fails (`medical/prep`, CONSTRAINT `prep_ibfk_1` FOREIGN KEY (`prod_id`) REFERENCES `producer` (`prod_id`) ON UPDATE CASCADE)

Проблема в внешними ключами но я не пойму как их преодолеть... или вношу не правильно или структура не та... :unsure:
Спасибо сказали:
Аватара пользователя
sarutobi
Сообщения: 676
Статус: Добрость и скромнота
ОС: Debian 5, FreeBSD 6.2/8.0

Re: создание записи в БД

Сообщение sarutobi »

MUTOgen писал(а):
09.10.2008 20:46
Проблема в внешними ключами но я не пойму как их преодолеть... или вношу не правильно или структура не та... :unsure:

Структура правильная. Проблема в том что ключа prod_id с значением 1 не существует. Вам нужно заполнять сначала основные справочники(producer), а потом зависимые(prep). И посмотрите внимательнее,как работает on update и на что он действует.
Fire and water, earth and sky - mistery surrounds us, legends never die!
Спасибо сказали:
Аватара пользователя
MUTOgen
Сообщения: 343
Статус: i like the way you move
ОС: OpenSuse 11.1

Re: создание записи в БД

Сообщение MUTOgen »

sarutobi писал(а):
09.10.2008 20:59
MUTOgen писал(а):
09.10.2008 20:46
Проблема в внешними ключами но я не пойму как их преодолеть... или вношу не правильно или структура не та... :unsure:

Структура правильная. Проблема в том что ключа prod_id с значением 1 не существует. Вам нужно заполнять сначала основные справочники(producer), а потом зависимые(prep). И посмотрите внимательнее,как работает on update и на что он действует.

и в правду. можно было догадаться. спасиб ;)
Спасибо сказали: