Je suis en train d'exécuter cette requête dans une base de données via phpmyadminMySQL trigger BEFORE INSERT pour activer les clés primaires en double insère dans les mises à jour
create trigger avoid_duplicated_sharing
before insert on sharingevents
for each row
begin
if (select count(*) from sharingevents where shared_note_id = NEW.shared_note_id AND shared_to = NEW.shared_to > 0) then
delete from sharingevents where shared_note_id = NEW.shared_note AND shared_to = NEW.shared_to
END IF;
END
Mais phpmyadmin me donne l'erreur suivante:
MySQL said: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'END IF' at line 7
Deux questions:
- Qu'est-ce qui ne va pas avec mon script?
- Après un déclencheur
BEFORE INSERT
, l'opération WillINSERT
sera-t-elle effectuée? Dans le cas où il n'a pas je vais devoir enleverINSERT INTO SharingEvents (SELECT * FROM NEW);
Vous n'êtes pas tourner l'insert dans une mise à jour, vous tournez dans le même insert. – Barmar
Vous avez raison, j'ai changé la requête à: 'supprimer from sharingevents où (shared_note = NEW.shared_note_id AND shared_to = NEW.shared_to);' – Maximetinu
Quel est le problème avec 'INSERT INTO ... ON DUPLICATE KEY UPDATE' ou Requêtes 'INSERT IGNORE'? Ne correspondent-ils pas à votre cas d'utilisation? – Mjh