最佳答案
                                        
                                                                        
                                我经常使用ON DELETE CASCADE,但我从不使用ON UPDATE CASCADE,因为我不确定在什么情况下它会有用。
为了便于讨论,让我们看一些代码。
CREATE TABLE parent (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
);
CREATE TABLE child (
id INT NOT NULL AUTO_INCREMENT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id)
REFERENCES parent(id)
ON DELETE CASCADE
);
对于ON DELETE CASCADE,如果父级中带有id的记录被删除,子级中带有parent_id = parent.id的记录将被自动删除。这应该没有问题。
id被更新时,ON UPDATE CASCADE将做同样的事情?
如果(1)为真,这意味着如果parent.id不可更新(或永远不会更新),就不需要使用ON UPDATE CASCADE,比如当它是AUTO_INCREMENT或总是设置为TIMESTAMP时。对吗?
如果(2)不为真,在其他哪种情况下我们应该使用ON UPDATE CASCADE?
child.parent_id更新为不存在的东西,它会被自动删除吗?
好吧,我知道,上面的一些问题可以通过编程测试来理解,但我也想知道这其中是否有依赖于数据库供应商的。
请照点光。
 
                                
                             
                                
                             
                                
                             
                                
                             
                                
                             
                                
                             
                                
                            