开发者

Conditional MySQL INSERT if record number is set at specific number

I'm creating a simple session based app in PHP/MySQL. I'm storing a session for each user connected to app in mysql table with their associated session_id. What I want to do is stop recording once a certain specified number of records are inserted in table. Is it possible in MySQL?

Below is a sample query that I thought would work, but it doesn't.

$dbSessionQ = "INSERT INTO `connSessions` (`sessID`, `expiry`) VALUES ('" . session_id() . "', '3600')";
$dbSessionQ .= "WHERE 开发者_StackOverflow中文版(SELECT COUNT(`sessID`) FROM `connSessions` < 5001) LIMIT 1";


I don't think INSERT has a WHERE clause. To start with, you can first query for the count and then do the insert. (Split the SELECT and the INSERT statements). Once you've figured that out, use a simple transaction to eliminate race conditions.


You could use INSERT...SELECT for this. Something like

INSERT INTO `connSessions` (`sessID`, `expiry`)
SELECT '" . session_id() . "', '3600' FROM `connSessions`
WHERE (SELECT COUNT(`sessID`) FROM `connSessions`) < 5001

But since you are not selecting something from connSessions I do not really see what you want to do here.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜