对于MySQL,如果我将用户ID和令牌存储在user表中,并且仅在提供的用户ID和令牌匹配时才允许在另一个表中插入记录。

INSERT INTO product(description)
VALUES('123')
WHERE EXISTS
  (SELECT 1 FROM users where userid='myuserid' AND token='ABCD')


以下SQL语句产生错误
“检查与您的MySQL服务器版本相对应的手册,以在'WHERE EXISTS(从用户ID为'29'的用户中选择1个)附近使用正确的语法”

但是对于更新,我可以成功更新

UPDATE product
SET description='123'
WHERE EXISTS
  (SELECT 1 FROM users where userid='myuserid' AND token='ABCD')


可以请任何专家帮助指教。
在执行插入操作之前,我需要最有效的方法来验证用户令牌是否正确。

最佳答案

请尝试使用触发器代替:

CREATE TRIGGER tokenValidator
BEFORE INSERT
ON product
FOR EACH ROW BEGIN
IF (SELECT 1 FROM users where userid='myuserid' AND token='ABCD') THEN
  INSERT INTO product(description) VALUES('123')
END IF

08-07 07:52
查看更多