我正在玩一个复制的数据库,我已经切换到innodb以掌握外键。我有下面的表格,下面是他们的列。在每个fk我设置ON DELETE:cascade和ON UPDATE:cascade。这种方法有效,直到我达到“低级别”的水平。我得到的桌子:
ALTER TABLE
1452 - 无法添加或更新子行:外键约束失败(lowlevel
ADD FOREIGN KEY(user_id
)REFERENCEStestdb
。users
(user_id
)ON UPETE CASCADE ON UPDATE CASCADE;testdb
。'#sql-11e6_47710b'>,CONSTRAINT
#sql-11e6_47710b_ibfk_1
外键 (user_id
)参考users
(user_id
)ON DELETE CASCADE ON)
这个想法是/我是否应该从accounts
中删除一个帐户,它会循环显示其computer_id ...其user_id ...然后最终是它的低级行,以便删除整个用户帐户一个电话。另一方面,如果未设置先前的约束,它将向后工作并阻止通过此链的任何插入。
我对此没有任何疑问......只是试图通过phpmyadmin立即设置fk。我的逻辑在哪里错了,为什么我不能将fk设置在我的低级'表示例?
我的表:
帐号
---------
account_id(主要)
电脑
---------
computer_id(主要)
account_id(fk to accounts.account_id)
用户
---------
user_id(主要)
computer_id(fk到computers.computer_id)
低级别 ---------
id(主要)
user_id(fk到users.user_id)
答案 0 :(得分:0)
我在'lowlevel'表中已经有一行,用户不存在。现在有道理,因为这是实现这一目的的目的之一。