Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2076 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [résolu]Interdire une suppression

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu]Interdire une suppression

n°1717824
tostiere
Posté le 15-04-2008 à 14:14:20  profilanswer
 

Bonjour,
admettons que j'aie 2 tables sur une base mysql :
 

utilisateur (
 id int auto_increment not null primary key,
 nom varchar(150) not null,
 statut int not null references statut.id
);


 

statut (
 id int auto_increment not null primary key,
 nom varchar(150) not null
);


 
 
Ces deux tables sont gérées dans un site en php. Chaque utilisateur est obligé de choisir un statut.
Problème : quand on tente de supprimer un statut dans la table statut, la suppression a toujours lieu et ce même si le statut est utilisé par un utilisateur !
 
Comment faire pour interdire que la suppression ait lieu ? Pour l'instant je fais une requête de vérification, laquelle envoie une autre requête de suppression si tout va bien. Mais est-ce propre ? Existe-t-il des mots clés à mettre sur la table pour ce genre de cas, des triggers, ou n'importe ?
 
Merci :)


Message édité par tostiere le 15-04-2008 à 15:53:41
mood
Publicité
Posté le 15-04-2008 à 14:14:20  profilanswer
 

n°1717828
sircam
I Like Trains
Posté le 15-04-2008 à 14:19:08  profilanswer
 

Utilise une contrainte du type ON DELETE RESTRICT.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1717854
tostiere
Posté le 15-04-2008 à 14:59:02  profilanswer
 

Merci pour ta réponse :)
 
En faisant une recherche sur le net, il faut si j'ai bien compris changer les tables en InnoDB, donc pour l'instant ça c'est fait et pas de problème.
 
Cependant en mettant ON DELETE RESTRICT après le champ "id" de la table "statut" j'ai le message d'erreur suivant :
 
#1064 - Erreur de syntaxe près de 'DELETE RESTRICT'
 
Si je le mets sur la table "utilisateur" il n'y a pas d'erreur mysql, cependant par la suite il ne se passe rien, c'est comme si je n'avais rien modifié (la suppression se fait toujours).
 
Pourrais-tu me donner un exemple d'utilisation ? Merci :)


Message édité par tostiere le 15-04-2008 à 14:59:31
n°1717901
masklinn
í dag viðrar vel til loftárása
Posté le 15-04-2008 à 15:33:33  profilanswer
 

sircam a écrit :

Utilise une contrainte du type ON DELETE RESTRICT.


Faut surtout commencer par ajouter status_id en foreign key dans le user :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1717904
tostiere
Posté le 15-04-2008 à 15:34:55  profilanswer
 

Bon j'ai finalement réussi à faire quelque chose en reprenant les exemples du site de mysql :
 
http://dev.mysql.com/doc/refman/5. [...] aints.html
 
Mon seul problème est qu'en les appliquant à ma base mysql existante qui est beaucoup plus grosse que l'exemple au dessus, j'ai l'erreur suivante :
 
#1005 - Ne peut créer la table '.\base_bon\bon.frm' (Errcode: 150)  
 
Dans un autre forum ça serait à cause d'absence d'index... pourtant j'en ai bien mis. D'ailleurs ça fonctionne dès que j'enlève la table "bon", mais bon, comme cette table est le coeur même de ma base, j'avoue que je ne sais plus quoi faire.

n°1717921
tostiere
Posté le 15-04-2008 à 15:52:11  profilanswer
 

Merci Masklinn, c'est ce que j'avais remarqué aussi :)
 
Sinon finalement j'ai réussi à créer la base et appliquer mes contraintes.
 
En fait le problème de l'erreur était tout bête, il suffisait de mettre ma table "bon" à la fin de mon script sql vu qu'elle référence pas mal d'autres tables. En MyISAM ça ne pose pas de problème, en InnoDB par contre c'est différent apparement.
 
Donc si à l'avenir d'autres ont le même problème, sachez que pour créer des contraintes il faut créer des index et des foreign key, passer vos tables en InnoDB, et suivre en gros les exemples du site de mysql (lien plus haut).
 
Merci encore masklinn et sircam pour vos pistes :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [résolu]Interdire une suppression

 

Sujets relatifs
[Résolu]java.util.zip ne pas avoir le chemin des fichiers[RESOLU] [VB] Commenter un noeud xml en VB
RESOLU PHP lecteur mp3 / lire mp3 a partir d'un dossier[Résolu] Vérifier les session_id()
[RESOLU]Excel : Numéro de ligne remplie[Résolu]Filtre dans un FileDialog
suppression de ligneMise à jour BD[Résolu]
[Résolu] Récuperer login Windows Intranet 
Plus de sujets relatifs à : [résolu]Interdire une suppression


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR