mysql - 在存在的地方插入

标签 mysql insert exists

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

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')

请哪位高手帮忙指教。 在执行插入之前,我需要最有效的方法来验证用户 token 是否正确。

最佳答案

请尝试使用触发器:

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 - 在存在的地方插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34346034/

相关文章:

mysql - CASE 不工作并在运行查询时显示 NULL 值

mysql - 对字段进行分组并创建新列的 SQL 命令

jquery - 通过使用日期(按日期)在元素之间插入元素

sql 不存在和子查询

mysql - MySQL 中 EXISTS 查询的两个条件

mysql - 在 MySQL 中复制 n 到 m 关系

mysql - 使用 JOIN 和 GROUP BY 更新 MySQL 表

mysql - 将数据填充到具有 m :m Relationships 的表中

hadoop - 配置单元设置 hive.optimize.sort.dynamic.partition

php - 如果存在 SQL 更新,如果不存在则插入不工作