保持id唯一的客户端和服务器端

时间:2010-10-05 22:38:23

标签: mysql client-side server-side

我现在正在擦洗头几个小时来解决以下情况:

网页上的几个Html表单由id标识。用户可以在客户端自己创建表单并填写数据。如何保证用户生成的表单的id是唯一的,并且在保存过程中不会发生任何冲突,因为同一个id是由其他人的客户端生成的。

问题/疑问:

  • 客户端的随机功能可以在两个客户端上返回相同的ID
  • 查找SQL表中的免费ID无法解决问题
  • 自动增加一个新的id会使整个过程复杂化,因为DOM id和SQL id不同所以我们来到下一点:
  • “左连接”组合dom_id和user_id来识别数据库中的表单看起来像一个性能杀手,因为我希望这些表格会很大

问题(形成尽可能简单):

有没有一种方法可以让客户端创建/获取一个唯一的id,以后它将被用作数据库条目的主键而不会发生任何冲突?什么是最佳做法?

我目前的解决方案(不好):

根本没有唯一ID来识别表单。始终通过左连接组合来标识特定用户生成的表单。但是如果用户说:删除我的帐户(和我的user_id)但将数据保留在服务器上会发生什么。我会丢失用户ID,这个查询不再适用了......

我真的很抱歉,我无法用另一种方式解释它。但我希望有人能理解我所面对的问题,并且至少可以给我一些提示

非常感谢你!

2 个答案:

答案 0 :(得分:2)

GUID(全球唯一标识符)可能有所帮助。见http://en.wikipedia.org/wiki/GUID

对于每个表单,客户端都可以生成新的GUID。理论上它应该是独一无二的。

答案 1 :(得分:0)

我只是在他们提交内容之前不向用户显示ID,此时他们可以看到生成的自动增量ID。它让事情变得简单。如果你真的需要它,你可以使用一个序列表,但它有一些警告,让我建议反对它:

CREATE TABLE sequence (id integer default 0, sequencename varchar(32));

递增:

UPDATE sequence 
SET id = @generated := id + 1 
WHERE sequencename = 'yoursequencename';

获得:

SELECT @generated;