参照表中设置了级联删除和级联更新但是没有实现。。
上网搜索后用触发器如下
CREATE TRIGGER deleUser_trigger
BEFORE DELETE ON users FOR EACH ROW
BEGIN
DELETE FROM stuinfo WHERE stu_id=old.id;
END;
然后。。。报错
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4
mysql版本5.7
不知道该怎么解决,新手求指导
(另外这一过程也可以在java中实现,但觉得在数据库中实现更好些,所以想在问一下,这两种实现方式有哪些区别吗,是减少java中代码量吗)
可以设置外键约束吧
你找一下第四行,看看语法问题,stu.id也加上表名试试
在数据库写的话效率会更高些,安全性也会更好
DROP TRIGGER IF EXISTS 触发器名字;
CREATE TRIGGER del_触发器名字
AFTER DELETE ON 主表
FOR EACH ROW
BEGIN
delete from 外键管理表 where 关联表被关联字段=old.主表的外键ID;
END;
触发器建立一直报错
CREATE TRIGGER deleUser_trigger
AFTER DELETE ON users FOR EACH ROW
begin
DELETE FROM stuinfo WHERE stuinfo.stu_id=old.id;
end
报错显示为 end附近错误
网上搜了搜后,好像是少了分隔符,加上分割符后:
DELIMITER //
CREATE TRIGGER deleUser_trigger
AFTER DELETE ON users FOR EACH ROW
begin
DELETE FROM stuinfo WHERE stuinfo.stu_id=old.id;
end; //
DELIMITER
。。还是报错
接着搜。。。。。。。
最后删除了begin...end不用分隔符成功建立
但还是疑惑有begin...end和delimiter为什么不能成功创建,希望路过的大神可以指导