0

我有一个需要删除一行的应用程序。当我删除仍未分配角色的用户时,它可以完美运行。

以下是表格:

用户:

user_id | user_name | password
------------------------------
   1    |   some    |   some
   2    |   some2   |   some2
   3    |   some3   |   some3

角色:

role_id | role_name 
-------------------
   1    | admin
   2    | member

用户角色:

user_id | role_id
-----------------
   1    |   1
   2    |   2
   3    |   2

问题是我无法使用删除它们

DELETE FROM users WHERE user_id = :id

我需要做什么?

4

1 回答 1

0

如果允许在未为用户分配角色时从用户表中删除一行,但不能删除已分配角色的行,则几乎可以肯定问题是由于设置为 RESTRICT的外键约束所致。

信息在这里,在维基百科

设置数据库的人明确防止在用户具有分配的角色时删除用户。如果允许删除而不发生任何其他事情(NO ACTION),那么您将在user_role表中有一行引用不存在的用户,那会有什么乐趣?还有其他可能性,例如删除用户可能会删除所有相应的角色(CASCADE)。

如果这确实是您的问题(约束设置为 RESTRICT),那么您需要先从user_role表中物理删除给定用户行,然后您应该能够删除该用户。

于 2012-07-25T03:19:35.280 回答