【问题标题】:INSERT WHERE EXISTS在存在的地方插入
【发布时间】:2016-03-24 14:19:41
【问题描述】:

对于 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 (SELECT 1 FROM users where userid='29')' 附近使用的正确语法”

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

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

请各位高手帮忙指点一下。 在插入之前,我需要最有效的方法来验证用户令牌是否正确。

【问题讨论】:

标签: mysql insert exists


【解决方案1】:

请尝试使用触发器:

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

【讨论】:

  • 仍然出现错误。 “检查与您的 MySQL 服务器版本相对应的手册,以获取在 'IF (SELECT 1 FROM users where userid='29') THEN INSERT... 附近使用的正确语法。”。明白IF语句只能用在存储过程中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
  • 2018-10-12
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 2012-10-18
相关资源
最近更新 更多