从PHP将UUID函数应用于数据库字段

从PHP将UUID函数应用于数据库字段,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有这个CodeIgniter和MySQL应用程序 我有一个数据库表,其中一个字段必须是唯一的。当我从表中“删除”一条记录时,我不想真的将其从表中删除,我只想释放unique字段的值,这样它就可以用于将来的新记录而不会发生冲突,并将其保留在那里 起初,我认为将某种UUID函数应用于该领域将是一个很好的解决方案。 有人能告诉我如何将UUID函数应用于PHP代码中的字段吗? 我在谷歌上搜索了一下,什么都找不到,CodeIgniter的文档也找不到 其他一些演讲也受到欢迎和赞赏 提前感谢 如果我在这里

我有这个CodeIgniter和MySQL应用程序

我有一个数据库表,其中一个字段必须是唯一的。当我从表中“删除”一条记录时,我不想真的将其从表中删除,我只想释放unique字段的值,这样它就可以用于将来的新记录而不会发生冲突,并将其保留在那里

起初,我认为将某种UUID函数应用于该领域将是一个很好的解决方案。 有人能告诉我如何将UUID函数应用于PHP代码中的字段吗? 我在谷歌上搜索了一下,什么都找不到,CodeIgniter的文档也找不到

其他一些演讲也受到欢迎和赞赏


提前感谢

如果我在这里正确理解了您的目标,您可以使用一行sql语句来实现这一点

update users set username = CONCAT(UUID(), username) where username = "username_to_be_deleted"
这是保持唯一性约束的一个很好的尝试,除非您的某个恶意用户选择了一个用户名,其格式为唯一id+某个字符串,并且它将意外匹配。不过不太可能

附加的好处:由于UUID具有固定的格式,因此始终可以从编码值中提取原始用户名


当然,如果您不在这样的字段上添加唯一性约束,而是以编程方式强制唯一性,那么这是一种更好的方法。

您想让UUID可重用吗?这a)有点违背uuid的概念,b)通常是不必要的,因为uuid并不短缺。或者我误解了你的问题?不,我想通过在“删除”时将唯一字段(比如用户名)值更改为UUID,使其可重用。这样,“已删除”记录就可以保留在表中,并且可以重用用户名值。好的,我明白了。这意味着您将丢失此字段中的信息。简单地将删除的用户移动到另一个“归档”表怎么样?