2013-06-12 45 views
1

我的数据库(InnoDB)有问题。我有两个表格:Mysql“ON UPDATE”约束删除我的行

table1{ 
    id1 INT.. 
    .. 
    PRIMARY KEY (id1) 
    } 

    table2{ 
    fk INT.. 
    ... 
    FOREIGN KEY (FK) REFERENCES table1(id1) 
     ON DELETE CASCADE 
     ON UPDATE CASCADE 
    } 

现在......当我将记录更改为table1时,table2中的记录被删除!我不想要这种行为。我该如何改变这一点?

我读到“InnoDB允许外键约束引用非唯一键”。我的钥匙是唯一的。我该如何改变这一点?

谢谢!

回答

0

这是预期的行为,因为table2中的外键用ON DELETE CASCADE属性定义。 table1中的删除是“级联到”table2

您可能想要change this definitionON DELETE SET NULL

+0

是的。我知道,但是当我在table1中更新时,该行也会被删除。我不知道为什么。 –

+0

哦,我明白了,对不起,我读得太快了。那么肯定还有别的事情发生('table1'上的触发器?)。这里发生的事情不能和外键相关(除非你使用'REPLACE'而不是'UPDATE'来“改变'table1'中的记录”,因为'REPLACE'实际上是一个'DELETE',后面跟着一个'INSERT') 。 – RandomSeed

+0

是的。触发器。该触发器将数字更改为另一个表格。 不...我使用UPDATE –