CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Mysql stopper l'insertion avec un trigger

CuirMoustachu
CuirMoustachu
Niveau 10
04 avril 2016 à 15:46:32

Bonjour, je cherche à faire en sorte que mon trigger stop l'insertion sous une certaine condition, le problème c'est que je ne trouve pas le "mot clé" pour faire cela, sous transact sql c'est un simple rollback il me semble, et en cherchant sur internet je vois divers solution (signal, rollback, creation d'une table erreur etc..), je ne comprend pas vraiment.
Admettons mon code :

create trigger agency_check
before insert on foo
for each row
begin
if (new.agency < 1 or new.agency > 5) then

#Que faire pour annuler l'insertion ici ?

end if;
end

Par avance merci :)

Pseudo supprimé
Pseudo supprimé 04 avril 2016 à 20:19:28

Tu as essayé avec la commande SIGNAL ?

IF (SomeTestToFail = "FAIL!") THEN
set msg = "DIE: You broke the rules... I will now Smite you, hold still...";
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg;
END IF;

http://dev.mysql.com/doc/refman/5.5/en/signal.html
Par contre je sais pas si ça fait un rollback automatique

Benekiki
Benekiki
Niveau 10
04 avril 2016 à 20:40:33

Voilà mon cours ça devrais t'aider avec Raise exception par contre nous c'est du Oracle
http://i.imgur.com/2gUnyLY.jpg

Cj1993
Cj1993
Niveau 12
04 avril 2016 à 22:09:37

Ici tu devrais trouver la solution : http://stackoverflow.com/q/2538786/4517421

UnTrucDeOufOuf
UnTrucDeOufOuf
Niveau 7
04 avril 2016 à 22:51:42

Je ne connais pas la réponse, mais au lieu de faire le trigger before insert, tu peux faire un trigger after :

after insert
if truc...
delete from ...

ça fait des écritures en plus donc inutilement plus gourmand mais temporairement ça passe :oui:

CuirMoustachu
CuirMoustachu
Niveau 10
06 avril 2016 à 00:24:19

Merci beaucoup, ça à l'air de fonctionner avec le signal, pour le after insert j'y avais pas pensé, encore merci.
Je me demande aussi si il est possible d'intercepter cette erreur en php.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment