MYSQL - 如果不存在且没有明显的主键/唯一键,则插入表中

标签 mysql sql

我有一个包含 2 列的表,它们是“用户”和“操作”,用于表示用户何时完成某个操作。仅当用户之前未执行过给定操作时才应进行输入,因此我觉得需要执行以下操作:

IF NOT EXISTS (select * from actiontable WHERE user=1 and action=5) THEN 
INSERT INTO actiontable VALUES(1,5);

但这似乎是不正确的语法,我找不到应该如何解决这个问题。这可能吗?或者有什么方法可以使用主键或唯一键来实现此目的?

最佳答案

您可以在用户、操作上创建主键,然后尝试

INSERT INTO actiontable (`user`,`action`) VALUES (1,5);

如果条目已存在,则会失败。如果您不想引发错误,可以尝试

INSERT IGNORE INTO actiontable (`user`,`action`) VALUES (1,5);

关于MYSQL - 如果不存在且没有明显的主键/唯一键,则插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22025761/

相关文章:

MySQL触发器求和用户ID相同的两列

mysql - 尝试将 .bmp 从 PC 保存到数据库 blob 字段

python - 将带有包含毫秒的日期时间字段的 CSV 文件导入 Postgres?

sql - 如何加入表中的最新行?

sql - 如何使用 T-SQL 在 SQL Server 中输出非结构化文件?

mysql - 选择三个表并计数

mysql - 您的 SQL 语法有错误;在 Joomla 中创建触发器

mysql - 检查表的时间重叠?

php - 如何从一个数组中的数据库中获取多个列?

sql - 如何在 SQL 的 select 语句中分配一个随机值?