我正在尝试创建一个STORED PROCEDURE
将用于UPDATE
名为machine
. 此表包含三列(machine_id
、machine_name
和reg_id
)。
在上述表中,reg_id
( INT
) 是一列,其值可以更改为 a machine_id
。
我想定义一个QUERY
/PROCEDURE
来检查reg_id
该表中是否已经存在。如果是,则为UPDATE
该行,否则INSERT
为新行。
有人可以帮我写那个QUERY
/PROCEDURE
吗?
Bil*_*lli 15
唯一的问题是,您不能像普通查询一样使用它。像IF或WHILE这样的控制结构只允许在存储过程或函数中使用。
只需创建一个这样的过程:
delimiter $$
create procedure select_or_insert()
begin
IF EXISTS (select * from users where username = 'something') THEN
update users set id= 'some' where username = 'something';
ELSE
insert into users (username) values ('something');
END IF;
end $$
delimiter ;
Run Code Online (Sandbox Code Playgroud)
并这样称呼它:
call select_or_insert();
Run Code Online (Sandbox Code Playgroud)
并做了
Cra*_*ein 13
create table machine(
machine_id int not null primary key,
machine_name varchar(50),
reg_id int
);
insert into machine (machine_id, machine_name, reg_id)
values(1, 'my_machine', 1);
INSERT INTO machine (reg_id, machine_id, machine_name) VALUES (1, 1, 'test_machine')
ON DUPLICATE KEY UPDATE machine_name=VALUES(machine_name);
Run Code Online (Sandbox Code Playgroud)