我有一个包含 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/