Вот одна из моих таблиц:
CREATE TABLE IF NOT EXISTS 'mydb'.'Branch' (
'branchID' CHAR(5) NOT NULL,
'branchAddress' VARCHAR(40) NULL,
'branchPhoneNo' VARCHAR(20) NULL,
'productCode' CHAR(5) NULL,
PRIMARY KEY ('branchID'))
ENGINE = InnoDB;
и вот вставки для этой таблицы:
START TRANSACTION;
USE 'mydb';
INSERT INTO 'mydb'.'Branch' ('branchID', 'branchAddress', 'branchPhoneNo',
'productCode') VALUES ('BR198', 'Waterford', '051786796', 'P1234');
INSERT INTO 'mydb'.'Branch' ('branchID', 'branchAddress', 'branchPhoneNo',
'productCode') VALUES ('BR221', 'Cork', '021475859', 'P5678');
INSERT INTO 'mydb'.'Branch' ('branchID', 'branchAddress', 'branchPhoneNo',
'productCode') VALUES ('BR330', 'Waterford', '051846784', 'P1122');
INSERT INTO 'mydb'.'Branch' ('branchID', 'branchAddress', 'branchPhoneNo',
'productCode') VALUES ('BR38', 'Dublin', '01784767', 'P3344');
INSERT INTO 'mydb'.'Branch' ('branchID', 'branchAddress', 'branchPhoneNo',
'productCode') VALUES ('BR001', 'Longford', '041875589', 'P5566');
COMMIT;
И вот мой второй стол:
CREATE TABLE IF NOT EXISTS 'mydb'.'Employee' (
'empNo' CHAR(5) NOT NULL,
'name' VARCHAR(25) NULL,
'department' VARCHAR(10) NULL,
'Branch_branchID' CHAR(5) NOT NULL,
'Manager_managerID' CHAR(5) NOT NULL,
PRIMARY KEY ('empNo'),
INDEX 'fk_Employee_Branch1_idx' ('Branch_branchID' ASC),
INDEX 'fk_Employee_Manager1_idx' ('Manager_managerID' ASC),
CONSTRAINT 'fk_Employee_Branch1'
FOREIGN KEY ('Branch_branchID')
REFERENCES 'mydb'.'Branch' ('branchID')
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT 'fk_Employee_Manager1'
FOREIGN KEY ('Manager_managerID')
REFERENCES 'mydb'.'Manager' ('managerID')
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
И вот вставки для этой таблицы:
START TRANSACTION;
USE 'mydb';
INSERT INTO 'mydb'.'Employee' ('empNo', 'name', 'department',
'Branch_branchID', 'Manager_managerID') VALUES ('EM092', 'Dami Kerry',
'Garden', 'BR198', 'M3321');
INSERT INTO 'mydb'.'Employee' ('empNo', 'name', 'department',
'Branch_branchID', 'Manager_managerID') VALUES ('EM782', 'Donna Kinsella',
'Living', 'BR221', 'M7789');
INSERT INTO 'mydb'.'Employee' ('empNo', 'name', 'department',
'Branch_branchID', 'Manager_managerID') VALUES ('EM109', 'Georgina Hughes',
'Bathroom', 'BR330', 'M9034');
INSERT INTO 'mydb'.'Employee' ('empNo', 'name', 'department',
'Branch_branchID', 'Manager_managerID') VALUES ('EM728', 'Joe Bloggs',
'Kitchen', 'BR938', 'M2945');
INSERT INTO 'mydb'.'Employee' ('empNo', 'name', 'department',
'Branch_branchID', 'Manager_managerID') VALUES ('EM211', 'Michael Carroll',
'Bedroom', 'BR001', 'M0921');
COMMIT;
Вот сообщение об ошибке, которое я продолжаю получать:
Код ошибки: 1452. Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не удается (mydb
. employee
, скованность fk_Employee_Branch1
FOREIGN KEY (Branch_branchID
) ЛИТЕРАТУРА branch
(branchID
) ON УДАЛИТЬ NO ACTION ON UPDATE NO ACTION)
Я очень много нового для MySql, как вы, вероятно, можете сказать. Пожалуйста, любая помощь/совет будет очень оценена!
Заранее спасибо!
проверьте запросы.
Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется
ошибка появляется при попытке удалить запись, зависящую от другой таблицы, или при попытке добавить запись с несуществующей зависимостью от другой таблицы.
Я видел запросы на вставку и нашел, что Pk "BR38" в таблице "Branch" не равен Fk "BR938", который вы пытаетесь вставить в Employee:
INSERT INTO 'mydb'.'Branch' ('branchID', 'branchAddress', 'branchPhoneNo',
'productCode') VALUES ('BR38', 'Dublin', '01784767', 'P3344');
INSERT INTO 'mydb'.'Employee' ('empNo', 'name', 'department',
'Branch_branchID', 'Manager_managerID') VALUES ('EM728', 'Joe Bloggs',
'Kitchen', 'BR938', 'M2945');
Исправьте FK в запросе и дайте мне знать, если он сработает.
BranchID = BR938
не существует в таблицеBranch
. Я думаю, что вы опечаталиBR38
на столеBranch
.