首页 > 解决方案 > 为什么在级联更新中插入数据后我的子表 tblOefenen2 没有得到更新?

问题描述

我有两个名为 tblOefenen(带主键)和 tblOefenen2(带外键)的表。我很早就放弃了外键,因为我想将“更新级联”添加到外键中。

那么做了什么: 1. 我删除了 tbloefenen2 的约束(外键)。2. 我已将新外键添加到列 ID,我的主键也在列 ID 上以及表 tbloefenen 中:

begin tran
alter table tbloefenen2
ADD constraint pkoefenen2 FOREIGN KEY (ID)
references tbloefenen (ID)
on UPDATE cascade
rollback tran
  1. 我在 tbloefenen(主键表)中插入了一些数据: Begin tran
    UPDATE tblOefenen
    set naam = 'anouk'
    where naam = 'Svenn'

    select *
    from tblOefenen

    rollback tran
  1. 在我插入上面的数据后,只有父(主键)表得到更新.. tbloefenen2(带有外键)保持不变(我希望在插入父主键表后自动更新)

有人可以帮帮我吗?

标签: mysqlsqltsql

解决方案


ON UPDATE CASCADE仅当您更新外键中的列时适用,而不适用于表中的其他列。所以如果你这样做

UPDATE tblOefenen
SET ID = 10
WHERE ID = 20;

SELECT * 
FROM tblOefenen2;

然后您会看到ID = 10更改为ID = 20.


推荐阅读