2011-11-22 142 views
0

我有一个数据库,用户有不同的项目。用户可以有多个项目,但项目只能有一个用户。删除条目而不删除相关条目mysql innoDB

我得到一个问题,如果我要删除一个用户而不删除他的项目。 MySql不会让我删除用户,除非我第一次删除项目。

有没有办法可以删除用户并保留项目?

+0

您可以向用户表添加不同的列,比如说'active',而不是删除该用户的记录,将该列的值设置为'n'(默认值为'y')。然后,您可以检索任何项目的信息,并在应用程序的其他部分只与活动列设置为'y'的用户一起工作。 –

回答

1

您已使用外键约束设置模式,因此项目表行坚持所属用户的存在。

这种“删除”通常是通过软删除来完成的:通过在表中添加一个“无效”列,并将其设置为“是”或非零或类似的东西,当您要将特定行标记为删除。

1

如果你有一个包含用户和项目表之间的外键关系,你可以在你创建的表用这个项目表

FOREIGN KEY (user_id) 
REFERENCES users(user_id) 
ON DELETE SET NULL, 

不幸的是你需要删除并重新创建表,因为你不能使用alter在现有表上进行此更改

+0

我认为你可以改变一个表。 [ALTER TABLE](http://dev.mysql.com/doc/refman/5.5/en/alter-table.html)支持删除和添加索引。 –

0

你必须改变外键约束才能做到这一点。这是拥有外键的原因之一,您不会破坏它们。