我对关系数据库比较陌生,我不确定我想做的事情是否可行。如果有人可以告诉我如何做到这一点或至少指出我正确的方向,
我有这个table_1
NameId SelectedName
1 A
3 C
6 F
NameId
是 REFERENCES table_2 (Id)
FOREIGN KEY
我有这个table_2
Id Name
1 A
2 B
3 C
4 D
5 E
6 F
我想设置我的数据库,以便每当更新 table_2
中的条目时,table_1
都会更改其Name
的值列(如果来自 table_2
的条目位于其中)。例如,如果我在 table_2
Id Name
3 C_EDITED
该更改也将反射(reflect)在table_1
中
最佳答案
您可能不想这样做......
这些表看起来没有标准化,因此如果您只是在 table_1
中重复 table_2
的值,则可能会出现数据冗余和完整性问题。因此,如果没有 SelectedName
列,table_1
可能会更好,因为您随时可以在需要时从 table_2 中查找 Name
的值,例如
SELECT t1.NameId, t2.Name
FROM table_1 t1 INNER JOIN table_2 t2 ON (t1.NameId = t2.Id);
但是,如果我们假设 Id
和 Name
作为您的主键是必需的(即您有诸如 (1,'A'),(1 ,'B'),(1,'Anything') in table_2 那么 PK 将在两列上定义,就像引用该表的 FK 一样。此 SQLfiddle 显示了它如何工作,但它确实要求您更改 PK table_2
和 table_1
上的 FK 并使用其他一些评论中提到的 ON UPDATE CASCADE 方法。
关于mysql - SQL 中自动更新外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48932586/