mysql—当select语句不输出任何行时,如何将数据插入表(并返回数据)?

cczfrluj  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(301)

我有一个mysql表,它是这样创建的;

CREATE TABLE test_contacts
(
    id int PRIMARY KEY AUTO_INCREMENT,
    name varchar(16) NOT NULL,
    databit int NOT NULL
);
CREATE UNIQUE INDEX test_contacts_name_uindex ON test_contacts (name);

当我想检索数据时 SELECT * FROM test_contacts WHERE name = '{name}'; 在我当前的java应用程序中,我将执行以下操作:(伪代码)

Object result = SELECT * FROM test_contacts WHERE name = '{name}';
if (result == null) {  
   INSERT INTO test_contacts (`name`, `databit`) VALUES ('{name}', 2);
   result = SELECT * FROM test_contacts WHERE name = '{name}';
}

有没有办法将这3个数据库调用压缩成一个总是返回指定名称行的语句(我需要你的帮助 id (已插入)

3vpjnl9f

3vpjnl9f1#

因为您有一个唯一的索引,所以不必签入代码,如果您的第一个选择有任何结果,您只需这样做

INSERT IGNORE test_contacts (`name`, `databit`) VALUES ('{name}', 2);

请在此处阅读更多信息
然后你得到 id 具有

SELECT LAST_INSERT_ID();

请在此处阅读更多信息

相关问题