如果记录不存在,请插入记录

时间:2018-01-27 13:37:03

标签: mysql mariadb

如果记录不存在特定区域设置,我想插入记录。基本上:唯一的消息,但不同的语言环境

例如我在我的消息表中有一条记录; 消息:hello和locale:com

现在,如果插入具有相同消息和区域设置的新记录,我想跳过它。

INSERT INTO messages (message, locale) VALUES ('hello', 'com');

这应该被跳过,但这不是:

INSERT INTO messages (message, locale) VALUES ('bye', 'com');
INSERT INTO messages (message, locale) VALUES ('bonjour', 'fr');
INSERT INTO messages (message, locale) VALUES ('hallo', 'de');

我正在尝试这样的事情:

IF NOT EXISTS (select * from messages where message = 'hello' AND locale = 'com') THEN
    insert into messages (message, locale) values ('hello', 'com');
END IF;

希望这很清楚我的意思是对不起我的英语不好。

1 个答案:

答案 0 :(得分:3)

您可以在两列上创建Unique Key(复合键)。

UNIQUE KEY (message, locale)

这不允许插入相同的数据组合。

<强> ==被修改==

您不需要费心检查数据。 unique key约束将处理数据唯一性。如果您尝试添加重复数据,则会抛出错误(唯一键违规)。

所以,如果你已经执行了

INSERT INTO messages (message, locale) VALUES ('hello', 'com');

然后,您正在尝试执行

INSERT INTO messages (message, locale) VALUES ('bye', 'com');
INSERT INTO messages (message, locale) VALUES ('bonjour', 'fr');
INSERT INTO messages (message, locale) VALUES ('hallo', 'de');

但是,你尝试再次执行下面的操作,然后你会得到异常/错误

INSERT INTO messages (message, locale) VALUES ('hello', 'com');