假设我有 2 张 table
用户
+----+--------+
| id | status |
+----+--------+
| 1 | A |
| 2 | A |
+----+--------+
文章
+----+-----+--------+
| id | uid | status |
+----+-----+--------+
| 1 | 1 | A |
| 2 | 2 | A |
| 3 | 2 | A |
| 4 | 2 | A |
| 5 | 1 | A |
| 6 | 2 | A |
| 7 | 2 | A |
| 8 | 1 | A |
| 9 | 2 | A |
| 10 | 2 | A |
+----+-----+--------+
如果运行此查询,如何添加外键:
UPDATE user SET status='B' WHERE id=1 OR id=2;
结果将是:
用户
+----+--------+
| id | status |
+----+--------+
| 1 | B |
| 2 | B |
+----+--------+
文章
+----+-----+--------+
| id | uid | status |
+----+-----+--------+
| 1 | 1 | B |
| 2 | 2 | B |
| 3 | 2 | B |
| 4 | 2 | B |
| 5 | 1 | B |
| 6 | 2 | B |
| 7 | 2 | B |
| 8 | 1 | B |
| 9 | 2 | B |
| 10 | 2 | B |
+----+-----+--------+
或者换句话说,如果我更新列user.status
,MySQL将自动使用相应的值更新列article.status
。
如何创建这个外键?
最佳答案
该工作不是外键可以完成的。使用更新触发器,但为了更好的数据库兼容性,最好对您的代码执行此操作。
触发代码:
CREATE TRIGGER SetArticleStatus AFTER UPDATE ON user
FOR EACH ROW
BEGIN
UPDATE `article`
SET status = NEW.status
WHERE uid = NEW.id
END
关于mysql - 添加带有更新级联的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26378895/