Каждый курс моей БД имеет корреспондентский факультет_ид.Синтаксис SQL Trigger
Каждый факультет имеет сходство с другими факультетами (и, как следствие, курсы с этими способностями). Факультет аффинности и курсов сродства представляют собой разделенные таблицы.
Я пытаюсь создать триггер, который удаляет записи из таблицы course_affinity, когда удаляется запись на faculty_affinity.
Это то, что у меня есть. Это не работает.
CREATE TRIGGER deleteCourses
AFTER DELETE
ON faculty_affinities
AS
BEGIN
DELETE FROM course_affinities
JOIN courses AS course1
JOIN courses AS course2
ON course_affinities.course1_id = course1.id
AND course_affinities.course2_id = course2.id
WHERE (course1.faculty_id = DELETED.faculty1_id OR course1.faculty_id = DELETED.faculty2_id)
AND (course2.faculty_id = DELETED.faculty1_id OR course2.faculty_id = DELETED.faculty2_id);
END;
Помогите кому-нибудь? Что я делаю не так?
Edit: я получаю ошибку
SQLSTATE[4200]: Syntax error... neas 'AS at line 4
Edit2: мои Миграции
Schema::create('courses', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 150);
$table->integer('faculty_id')->unsigned();
$table->foreign('faculty_id')->references('id')->on('faculties');
$table->boolean('active')->default(1);
//$table->softDeletes();
});
Schema::create('faculties', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 150)->unique();
$table->boolean('active')->default(1);
//$table->softDeletes();
});
Schema::create('course_affinities', function (Blueprint $table) {
$table->increments('id');
$table->integer('course1_id')->unsigned();
$table->foreign('course1_id')->references('id')->on('courses');
$table->integer('course2_id')->unsigned();
$table->foreign('course2_id')->references('id')->on('courses');
$table->boolean('active')->default(1);
//$table->softDeletes();
});
Schema::create('faculty_affinities', function (Blueprint $table) {
$table->increments('id');
$table->integer('faculty1_id')->unsigned();
$table->foreign('faculty1_id')->references('id')->on('faculties');
$table->integer('faculty2_id')->unsigned();
$table->foreign('faculty2_id')->references('id')->on('faculties');
$table->boolean('active')->default(1);
//$table->softDeletes();
});
не работает так, как? – artm
Ошибка синтаксиса. Я отредактировал исходное сообщение с сообщением об ошибке. –
Я не думаю, что вы можете удалить из 'JOIN', и я знаю, что' DELETED' не является допустимым ключевым словом в MySQL. Если вы опубликуете определения таблиц, мы можем направлять вас в правильном направлении. –