php - mySQL INSERT with TRIGGER 的计时问题

标签 php mysql triggers

对于 iPad 应用程序,我创建了一个网络服务,当用户启动该应用程序时,它会在我的团队表中创建一个新的表行。 PHP 生成一个唯一 ID 并填充一些其他字段。

此外,我在插入时在 mySQL 中的团队表上创建了一个触发器,其中根据特定日期、项目和组的已插入行自动生成团队编号。

不幸的是,有时我在向表中插入新行时似乎遇到了计时问题。如果两个应用程序在同一秒(毫秒?)内创建了一个团队,那么两个应用程序的 mySQL 触发器的结果将是相同的团队编号。因此,两个应用程序都没有团队编号 1 和 2,而是团队编号 1。

我的 teamtable 看起来像这样:

TeamID | pProject | group | teamnumber | languagecode | created_at

以及 mySQL 的触发器:

CREATE TRIGGER after_team_insert BEFORE INSERT ON teams 

FOR EACH ROW
BEGIN

SELECT COUNT( * ) INTO @counter
FROM teams
WHERE DATE( created_at ) = DATE( NOW( ) )
AND teams.group = NEW.group
AND teams.pProject = NEW.pProject;

SET NEW.teamnumber = CAST(@counter AS UNSIGNED) + 1;

END;

我认为我的问题与将行插入数据库的并行线程有关,因此在触发器工作时得到错误的计数。

有没有人有这个问题的解决方案,或者我是否必须在 PHP 中使用某种队列来防止团队人数加倍?

提前致谢, 卡斯滕。

最佳答案

关于php - mySQL INSERT with TRIGGER 的计时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21759846/

相关文章:

php - 工具集表中的第一行具有黑色背景

Mysql手动自增并发连接数证明

mysql 在插入空值时触发

php - 无法在PHP MYSQL中基于电子邮件删除

php - 在 Sphinx 中按 sql_attr_float 排序

PHP:奇怪的引用变量

php - MySQL 错误 : 1064

mysql - 计算有多少市场有某种产品

javascript - 使用控制台窗口防止在客户端自动触发点击事件

php - 当有人在某个表中插入或更新行时运行脚本