我有一个 MySQL 函数,可以为给定的表生成标识符 ID。表有复合键;
id - Auto_increment
act_id - BigInt(16). Its the ID obtained from the function below.
该函数返回 BigInt(16)
BEGIN
DECLARE qid integer;
SELECT max(id)+1 into qid from wi_activity;
IF(qid IS NULL) THEN
SET qid=1;
END IF;
RETURN convert(concat(6,DATE_FORMAT(CURDATE(),'%d%m%Y'),lpad(qid,7,'0')), unsigned integer);
END
问题 1:
该网站有多个数据输入用户,他们在给定的表中输入数据。可能存在多个用户尝试同时输入数据的情况。这将读取相同的 ID 值,从而生成相同的 act_id 值。
问题2:
在插入表之前,需要显示所有输入的数据,包括插入后获取的act_id键,并且还必须防止重复的act_id键生成。
如何解决这些问题?
最佳答案
除非将记录实际插入数据库,否则您无法可靠地预测记录将具有的 ID 值。
最好的方法是将空(或完整的,附加某种状态的)行实际插入数据库中,并在页面中显示它们的 ID。然后您可以将这些行更新为“接受”。
任何其他方法都会给您带来麻烦,因为只有实际插入的行具有可靠的 ID 值。
关于php - 如何使用插入数据的 ID 创建数据摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27018545/