2016-02-20 4 views
0

Я использовал следующий код прежде, чем получить то, что хотел, но затем добавил некоторые внешние ключи, и это испортило его:Получение ERROR 1451 (23000): невозможно удалить или обновить родительскую строку: ограничение внешнего ключа завершено

DELETE FROM Faculty WHERE LastName LIKE 'Z%' 

DELETE FROM Courses WHERE FirstYrOffered='1999' 

Просто я пытаюсь удалить запись из таблицы, но она работает неправильно. Это как мои таблицы смотрят:

CREATE TABLE Faculty (
FacultyID int, 
FirstName varchar(30), 
LastName varchar(30), 
EMail varchar(60), 
BirthDate DATE, 
Numbr_Courses int, 
PRIMARY KEY (FacultyID) 
); 

CREATE TABLE Courses(
CourseID int, 
CourseDisc varchar(4), 
CourseNum varchar(4), 
NumbrCred varchar(1), 
FirstYrOffered int, 
CourseTitle varchar(75), 
PRIMARY KEY (CourseID) 
); 

CREATE TABLE Faculty_Courses(
InstanceID int, 
FacultyID int, 
CourseDisc varchar(4), 
CourseID int, 
CourseNum varchar(4), 
CourseTitle varchar(75), 
PRIMARY KEY (InstanceID), 
FOREIGN KEY (FacultyID) REFERENCES Faculty(FacultyID), 
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID) 
); 

Я посмотрел примеры кода TABLE ALTER, но на самом деле не понимают, что я делаю с этим. Любая помощь будет оценена по достоинству.

+0

Использование ограничений FOREIGN KEY заключается в том, чтобы помочь сохранить эти разрозненные данные [mysql doc] (https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html). Могу ли я спросить, почему вы хотите удалить его? –

+0

Это все для класса, чтобы показать, что мы понимаем, как это сделать. Поэтому в основном мне нужно удалить его, потому что он находится в инструкциях. Я попробую ответить ниже с параметром delete cascade, чтобы узнать, работает ли он. –

+0

У меня было 2 варианта, если он не работает. Дайте ему попробовать, если ошибка дайте мне знать –

ответ

2

Сначала вы должны удалить соответствующие записи с Faculty_Courses, а затем удалить записи из таблиц факультета и курсов. Альтернативно, установите on delete cascade option на внешние ключи.

+0

Спасибо, отлично работает –