我有一个应用程序,我需要删除一行。当我删除仍未分配 角色 的用户时,它可以正常工作。
以下是表格:
用户:
user_id | user_name | password
------------------------------
1 | some | some
2 | some2 | some2
3 | some3 | some3
作用:
role_id | role_name
-------------------
1 | admin
2 | member
USER_ROLE:
user_id | role_id
-----------------
1 | 1
2 | 2
3 | 2
问题是我无法使用
删除它们DELETE FROM users WHERE user_id = :id
我需要做什么?
答案 0 :(得分:0)
如果在未为用户分配角色时允许从用户表中删除行,但是您无法删除已分配角色的行,则问题几乎肯定是由于外键约束< / em>设置为RESTRICT。
此处的信息,Wikipedia。
设置数据库的人明确阻止在用户具有指定角色时删除用户。如果允许删除而没有其他任何事情发生(没有行动),那么你会在user_role
表中有一行指向一个不存在的用户,那会有什么乐趣?还有其他可能性,例如删除用户可以删除所有相应的角色(CASCADE)。
如果这确实是您的问题(约束设置为RESTRICT),那么您需要从user_role
表中为给定用户首先物理删除行,然后您应该能够删除用户。