MySQL 触发器:删除主表中从属表中的记录
在数据库模式中,通常有多个表他们之间的关系。当在主表中操作记录时,可能还需要对从属表执行相应的操作。 MySQL 触发器提供了一种方便的方法来自动执行此类操作。
考虑一个场景,其中名为顾客的表存储有关个人的信息,而名为顾客信息的相关表包含每个顾客的其他详细信息。当顾客从顾客表中删除时,还需要从顾客信息表中删除其相应的信息。
为了实现此目的,可以使用 DELETE 触发器。但是,尝试使用以下代码创建触发器时遇到语法错误:
CREATE TRIGGER log_patron_delete AFTER DELETE on patrons FOR EACH ROW BEGIN DELETE FROM patron_info WHERE patron_info.pid = patrons.id END
错误(1046:检查第 6 行 END 附近的语法)表示触发器代码的语法存在问题。经过仔细检查,发现在 DELETE 语句中应该使用 old.id 语法而不是顾客.id 来正确引用已删除顾客的 ID。
更正后的触发代码如下:
CREATE TRIGGER log_patron_delete AFTER DELETE on patrons FOR EACH ROW BEGIN DELETE FROM patron_info WHERE patron_info.pid = old.id; END
需要注意的是,在控制台窗口中输入触发代码以处理代码中的特定字符时,可能需要使用分隔符(例如 $ 或 //)。另外,不要忘记在 DELETE 语句末尾添加分号。
通过遵循这些准则,每当从顾客表中删除一条记录时,触发器都会成功地从顾客信息表中删除记录,从而确保数据数据库内的一致性和完整性。
以上是MySQL主表删除后如何正确删除从属表记录?的详细内容。更多信息请关注PHP中文网其他相关文章!