Невозможно добавить или обновить дочернюю строку - PullRequest
4 голосов
/ 24 ноября 2011

Я пытаюсь добавить записи в две таблицы ниже,

CREATE TABLE customer
(Custno     CHAR(3),
 Custname   VARCHAR(25) NOT NULL,
 Custstreet VARCHAR(30) NOT NULL,
 Custcity   VARCHAR(15) NOT NULL,
 Custprov   VARCHAR(3) NOT NULL,
 Custpcode  VARCHAR(6) NOT NULL,
 Disc       DECIMAL(3,1),
 Balance    DECIMAL(7,2),
 Credlimit  DECIMAL(5),
 Srepno     CHAR(3),
 CONSTRAINT pkcustno PRIMARY KEY (Custno),
 CONSTRAINT fksrepno FOREIGN KEY (Srepno) REFERENCES salesrep(Srepno)
);


CREATE TABLE orders
(Orderno   CHAR(5) UNIQUE NOT NULL,
 Orderdate DATE,
 Custno    CHAR(3) NOT NULL,
 CONSTRAINT fkordercust FOREIGN KEY (Custno) REFERENCES customer (Custno)
);

При добавлении, как это,

INSERT INTO orders(Orderno, Orderdate, Custno) VALUES('14587','2011-11-09', '125' );
INSERT INTO orders(Orderno, Orderdate, Custno) VALUES('11547','2011-11-07', '125' );

Я получаю, " Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (sh. orders, CONSTRAINT fkordercust FOREIGN KEY (Custno) ССЫЛКИ customer (Custno)) " Что-то не так на столе?

Ответы [ 5 ]

7 голосов
/ 24 ноября 2011

У вас нет клиента с CustNo = '125'.Из-за этого Foreign key терпит неудачу.Вы пытаетесь разместить заказ для несуществующего клиента, БД выдает ошибку.

3 голосов
/ 24 ноября 2011

Вы создали внешний ключ для таблицы клиентов, но (по-видимому) не вставили в нее данные.

3 голосов
/ 24 ноября 2011

Ваша таблица в порядке, у вас просто нет клиента с CustNo '125' в базе данных.

3 голосов
/ 24 ноября 2011

У вас на самом деле есть строка клиента для номера клиента 125? Думаю, нет. Сообщение об ошибке говорит точно , что не так.

Нарушение внешнего ключа, обеспечивающее невозможность создания заказов для несуществующих клиентов, нарушается:

CONSTRAINT fkordercust FOREIGN KEY (Custno) REFERENCES customer (Custno)

Создайте строку клиента сначала , затем вы можете добавить строки заказа для этого клиента к своему сердцу.

1 голос
/ 24 ноября 2011

У вас есть клиент с номером 125?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...