我有一张Mysql桌子。
在用户以HTML填充Request_message后,用户单击submit按钮。我将从request表生成一个请求ID,然后添加该行。(表有两次点击,一次用于获取最后一次request_id,另一次用于将行添加到表中)。我想避免这件事。
同时,假设7-8个用户按下提交按钮,他们将从表中得到相同的最后一个request_id。它们将向最后一个request_id添加1,并尝试添加该行。除了一个都得到主键约束错误 .如何避免这种情况??
请提供你的建议。
谢谢德维什
发布于 2012-05-28 07:06:59
主键使用增量。
编辑:如果您不对列使用整数类型,则另一个解决方案是使用行级锁。
发布于 2012-05-28 07:07:46
使用sp在表中插入记录。
或
表中主键使用“自动编号”字段。
或
使用
INSERTINTO request
(Request_id,
Request_message)
VALUES ( (SELECT 'REQ' + Lpad(Ifnull(Max(Request_id) + 1, 0), 4, 0)
FROM request),
yourMessage)
发布于 2012-05-28 07:08:00
对于第一个问题,你可以这样做。
INSERT INTO request (Request_id,Request_message) VALUES (
(SELECT MAX(Request_id) FROM request), yourMessage)
或者更好的是,您可以使用自动增量作为p.k。
此外,如果您要求DBMS处理所有的增量/插入问题,则可以避免与p.k直接相关的问题。
https://stackoverflow.com/questions/10780614
复制相似问题