【发布时间】:2016-05-20 04:46:37
【问题描述】:
我数据库中的每门课程都有一个对应的faculty_id。
每个学院都与其他学院有密切关系(因此,具有这些学院 ID 的课程也是如此)。教师关联和课程关联是分开的表格。
我正在尝试构建一个触发器,当faculty_affinity 上的记录被删除时,该触发器会从 course_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;
帮助别人?我做错了什么?
编辑:我收到错误
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();
});
【问题讨论】:
-
语法错误。我编辑了带有错误消息的原始帖子。
-
我认为您不能从
JOIN中删除,而且我知道DELETED在MySQL 中不是有效的关键字。如果您发布表格定义,也许我们可以指导您正确的方向。 -
如果您已有有效答案,则不应编辑您的问题,这样您的编辑会使这些答案无效。
-
你是对的。对不起各位!
-
这篇文章为我解决了这个问题。 stackoverflow.com/questions/18379137/…