条件必选MySQL INSERT,如果记录号被设置为特定的数字


Conditional MySQL INSERT if record number is set at specific number

我正在创建一个基于PHP/MySQL的简单会话应用程序。我存储一个会话的每个用户连接到应用程序在mysql表与他们相关联的session_id。我想做的是,一旦某个特定数量的记录被插入到表中,就停止记录。在MySQL中是可能的吗?

下面是一个示例查询,我认为它会工作,但它没有。

$dbSessionQ = "INSERT INTO `connSessions` (`sessID`, `expiry`) VALUES ('" . session_id() . "', '3600')";
$dbSessionQ .= "WHERE (SELECT COUNT(`sessID`) FROM `connSessions` < 5001) LIMIT 1";

我不认为INSERT有WHERE子句。首先,您可以先查询计数,然后执行插入操作。(拆分SELECT和INSERT语句)。一旦您弄清楚了这一点,使用一个简单的事务来消除竞争条件。

您可以使用INSERT…SELECT。就像

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

但是因为你没有从connSessions中选择一些东西,我真的看不出你想在这里做什么。