mysql - ON DELETE CASCADE 的反向

标签 mysql sql database database-design

假设我有以下架构:

CREATE TABLE `users` (
  `id` int(10) unsigned auto_increment,
  `historyId` varchar(255),
  PRIMARY KEY  (`id`)
);

CREATE TABLE `histories` (
  `id` int(10) unsigned auto_increment,
  `history` TEXT,
  PRIMARY KEY  (`id`)
);

一个用户只有一个历史记录,没有历史记录指向用户的目的是许多其他表(未在此架构中提及)也有历史记录。

删除用户的最简单方法是什么也将删除其历史记录?

最佳答案

你可以像这样使用触发器:

DELIMITER $$
CREATE TRIGGER delete_user_history_on_delete_user
AFTER DELETE ON `users`
FOR EACH ROW
BEGIN
DELETE FROM `histories` WHERE id = old.historyId;
END$$
DELIMITER ;

关于mysql - ON DELETE CASCADE 的反向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5560172/

相关文章:

sql - DB2 字段值替换

mysql - 我可以使用 fig 在 docker 中初始化持久数据库吗?

sql - 我如何强制 SQL Server 2005 在 where 之前运行连接?

c# - 如何在 C# 中获取 PL-SQL block 返回的 dbms.output 值

ruby-on-rails - rails - 如何使用链接更改数据库值

sql - 如何优化此查询(OR 内部 AND 验证)?

mysql - LEFT JOIN 比 INNER JOIN 快得多

mysql - 我可以有条件地运行连续的 MySQL 子查询吗?

php - WP_query 与数组中的多个值不匹配

jquery - 如何编写 MySQL 查询以在保留特定行的 ID 的同时对结果进行分组?