對於iPad應用程序,我創建了一個Web服務,它在用戶啓動應用程序時在我的團隊表中創建一個新的表格行。 PHP生成一個唯一的ID並填充其他一些字段。mySQL INSERT with TRIGGER的計時問題
此外,我已經在mySQL的團隊表上創建了一個觸發器,根據已插入的特定日期,項目和組的行數,自動生成團隊編號。
不幸的是,我有時會在向表中插入新行時出現計時問題。如果兩個應用程序在同一秒內創建一個團隊(毫秒?),則mySQL觸發器的結果將與這兩個應用程序的團隊編號相同。因此,而不是有teamnumber 1和2都應用有teamnumber 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中使用某種隊列來防止這種團隊編號倍增?
在此先感謝, Carsten。
感謝傑森插入,現在的作品完美:-)不要」我知道我該如何忘記鎖定表格*對我感到羞恥* – carsten
不客氣!你能爲這個答案投票嗎?你好! –