我有一个表,用于存储链接到帐户的会话哈希值:
我想更新表中属于某个帐户的每个条目,但我没有该帐户的ID
。我必须从同一张桌子上拿到它。
目前这就是我的工作:
请注意,整个过程的唯一输入是会话哈希,名称为::INPUT_ADMIN_HASH
首先我获得了adminID:
SELECT admins_adminID FROM `adminSessions` WHERE `adminSessionHash` = :INPUT_ADMIN_HASH;
然后通过获取的adminID更新相同的表:
UPDATE `adminSessions` SET `sessionValid` = FALSE WHERE `admins_adminID` = :INPUT_ADMIN_ID
我想将它们合并到一个查询中:
UPDATE
`adminSessions` AS a
INNER JOIN
`adminSessions` AS b ON a.`adminSessionID` = b.`adminSessionID`
SET
a.`sessionValid` = FALSE
WHERE
a.`adminSessionHash` = :INPUT_ADMIN_HASH;
不起作用:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.
我做错了什么?
答案 0 :(得分:0)
如果您无法停用safe mode
,可以尝试
UPDATE adminSessions
SET sessionValid = FALSE
WHERE adminSessionHash = :INPUT_ADMIN_HASH
AND adminSessionID IS NOT NULL;
我不知道这是否足以说服MySQL
您使用了KEY
列。
P.S。你的JOIN
完全没有任何帮助。