我想使用触发器在MySql中创建外键。我有以下表格:
1)“内容”表:
教师 ID varchar(20)
子 ID varchar(20)
路径 varchar(100)
文件名 varchar(100)
2)“老师”表:
教师 ID varchar(20)
教师姓名 varchar(45)
我使用以下代码作为触发器(分隔符//):
CREATE TRIGGER fk_content_teacher_temp BEFORE INSERT ON `content`
FOR EACH ROW
BEGIN
DECLARE has_row TINYINT;
SET has_row = 0;
SELECT 1 INTO has_row FROM `teacher` INNER JOIN `content` ON content.teacher_id=teacher.teacher_id;
IF has_row=0 THEN
INSERT error_msg VALUES ('Foreign Key Constraint Violated!');
END IF;
END//
问题是,当我尝试在内容表中插入教师表中不存在的教师 ID 时,出现以下错误:
1172 - 结果由多行组成
我该怎么做才能使它正常工作,或者我可以使用触发器来制作外键的任何其他方式?
先感谢您!
虽然尚不清楚“使用触发器创建外键”语句的具体意图,但您当前的问题是SELECT INTO
不能在返回多个结果的查询中使用。
SELECT 1 INTO has_row FROM teacher INNER JOIN content ON content.teacher_id=teacher.teacher_id;
返回两个表之间的所有匹配项。
如果您想检查是否teacher
包含teacher_id
价值被用于新的content
记录,您应该能够完全删除 JOIN 子句并像这样查询:
SELECT 1 INTO has_row FROM `teacher` WHERE `teacher_id` = NEW.`teacher_id`;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)