J'essaie de créer un STORED PROCEDURE
qui sera utilisé pour UPDATE
une table appelée machine
. Ce tableau comporte trois colonnes (machine_id
, machine_name
et reg_id
).
Dans le tableau susmentionné, reg_id
(INT
) est une colonne dont les valeurs peuvent être modifiées pour un machine_id
.
Je voudrais définir un QUERY
/PROCEDURE
pour vérifier si un reg_id
existe déjà dans cette table. Si c'est le cas, alors UPDATE
cette ligne, sinon INSERT
une nouvelle ligne.
Quelqu'un peut-il m'aider à écrire ce QUERY
/PROCEDURE
?
J'espère que cela aide, MISE À JOUR DE LA CLÉ DUPLICATE
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);
Travailler sur SQL Fiddle
Le seul problème est que vous ne pouvez pas l'utiliser comme une requête normale. Les structures de contrôle comme SI ou TANDIS QUE ne sont autorisées que dans les procédures ou fonctions stockées.
Créez simplement une procédure comme celle-ci:
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 ;
et appelez-le comme ceci:
call select_or_insert();
et.. Voila