UPDATE
machine
というテーブルに使用されるSTORED PROCEDURE
を作成しようとしています。このテーブルには3つの列(machine_id
、machine_name
、reg_id
)があります。
前述の表では、reg_id
(INT
)はmachine_id
の値を変更できる列です。
QUERY
/PROCEDURE
を定義して、reg_id
がそのテーブルにすでに存在するかどうかを確認します。存在する場合は、その行をUPDATE
し、そうでない場合はINSERT
を新しい行にします。
誰かがQUERY
/PROCEDURE
を書くのを手伝ってくれませんか?
これが役に立てば幸い DUPLICATE KEY UPDATE
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);
作業する SQL Fiddle
問題は、通常のクエリのように使用できないことです。 [〜#〜] 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 ;
次のように呼び出します。
call select_or_insert();
そして完了