如何避免mysql主键约束错误

时间:2012-05-28 07:03:13

标签: mysql

我有一个Mysql表。

  • 请求 - Request_id,Request_message

用户在HTML表单中填写Request_message后,用户单击“提交”按钮。我将从请求表中生成一个请求ID,然后添加该行。 (表中有两个匹配,一个用于获取最后一个request_id,另一个用于将行添加到表中)。我想避免这种情况。

另外,同时说7-8个用户点击提交按钮,他们将从表中获得相同的最后一个request_id。他们会在最后一个request_id中添加1,并尝试添加该行。除了一个人都得到主键约束错误 ..如何避免这个?

请提供您的建议。

由于 Devesh

3 个答案:

答案 0 :(得分:2)

使用AUTO_INCREMENT作为主键。

修改 的 如果不对列使用整数类型,则另一种解决方案是使用行级锁定。

答案 1 :(得分:0)

使用sp在表格中插入记录。

在表格中使用自动编号字段作为主键。

使用

 INSERTINTO request 
            (Request_id, 
             Request_message) 
VALUES      ( (SELECT 'REQ' + Lpad(Ifnull(Max(Request_id) + 1, 0), 4, 0) 
               FROM   request), 
              yourMessage) 

答案 2 :(得分:0)

对于第一个问题,你可以做类似的事情

INSERT INTO request (Request_id,Request_message) VALUES (
   (SELECT MAX(Request_id) FROM request), yourMessage)

或更好,您可以使用autoincrement作为p.k。

此外,如果您向DBMS请求所有增量/检测问题,则可以避免直接与p.k相关的问题。