Mot clef : MySQL

Comment interdire une suppression MYSQL avec un Trigger

par Jean-françois JOLY le mar.29, 2010, dans Developpement Web

Récemment il s’est posé à moi une problématique très spécifique : Interdire une suppression dans une table qui est potentiellement consultable par plusieurs sources différentes. Bien sur ces sources ont toutes le maximum de droits et peuvent donc effectuer des requètes de suppression. Il se trouve que mystérieusement, des enregistrement de la table disparaissent tous les soirs … Il faut donc trouver une solution pour interdire la suppression dans cette table sans changer les droits. La solution la plus logique est d’utiliser un trigger pour interdire la suppression. Bien sur, sous oracle ou sql server, il aurait suffit de faire un simple RAISERROR u peu de cette manière :

1
2
3
4
5
6
CREATE TRIGGER forbidden_delete BEFORE DELETE ON matable   
FOR EACH ROW    
BEGIN     
RAISERROR ('Suppression interdite sur cette table', 16, 1);    
ROLLBACK TRANSACTION;
END;

Seulement voilà, je ne travaille pas sur du oracle ou du sql server, mais sur du mysql et RAISERROR ça n’existe pas (enfin à ma connaissance) sur la version 5.0.84. Du coup il faut trouver une alternative simple. Après moultes recherches, l’alternative existe : Pour faire échouer la requète de suppression, il faut faire planter le trigger. Si le trigger plante, la requète ne s’effectue pas. Qu’à celà ne tienne, voilà un excellent moyen de faire planter un trigger :

1
2
3
4
5
6
7
8
DELIMITER //
DROP TRIGGER IF EXISTS forbidden_delete//    
CREATE TRIGGER forbidden_delete BEFORE DELETE ON matable
FOR EACH ROW
BEGIN
SELECT 'a' INTO @toto;
SELECT 'b','c' INTO @toto;
END;//

A chaque delete sur la table matable, la requète de suppression va lamentablement échouer car le trigger va échouer.
Voilà c’était l’astuce du jour en espérant qu’elle soit utile à quelqu’un ;-) .

4 Commentaires :, , , , , plus...

Une offre d’emploi qui donne envie

par Jean-françois JOLY le fév.19, 2010, dans Developpement Web

Je consultais mes messages non lus sur viadéo, quand je suis tombé sur un message avec une offre d’emploi assez excellente. Bon actuellement je ne suis pas sur Toulon et mon emploi actuel prend une tournure intéressante, ce qui ne me donne pas trop envie de le quitter. mais du coup pour les gens cherchant un emploi l’offre est par ici :

image

http://www.cobalink.com/cobadevcontest/

Bonne chance aux futurs candidats ^^.

Laisser un commentaire :, , , , , plus...

IIS 7, MySQL et problèmes de connexion

par Jean-françois JOLY le jan.01, 2010, dans Developpement Web

Si tout comme moi, vous décidez d’installer php 5.3 sur un serveur IIS 7 sur windows 7 afin de tester un petit peu en local, vous risquez de vous trouvez confronter a quelques petits problèmes de configuration. Aujourd’hui je vais vous faire part d’un petit soucis très bête que j’ai rencontré au cours de mon installation …

Petit résumé de l’histoire :
J’avais quelques sites sur un serveur LAMP et un beau jour j’ai décidé de changer car j’avais très envie de m’essayer a developper en autre chose que du php.
Etant l’heureux propriétaire d’une licence windows 2003 Server standard édition. J’ai donc migré et installé php 5.3 et mysql 5.1 dernier cru afin de conserver mes sites. Tout marche nickel chrome.
Bien sur je ne compte pas abandonner le php au profit d’un autre langage, mais plutôt essayer ‘élargir mes horizons. A cette fin je décide d’installer mon attirail du développeur sur mon PC pour faire du développement en local. Afin de bien coller à ma nouvelle problématique je vire apache et j’installe php 5.3 pour IIS. Problème : je suis sous windows 7 et c’est donc IIS 7 qui est installé sur mon pc. Autre problème : je récupère mes sites, mes dbs mysql, tout est configuré comme sur mon serveur win 2003. Et là c’est le drame : erreur de connexion à la db. Bien sur pour couronner le tout, j’ai une alternance d’erreurs : erreur interne du serveur et le simplem message du trigger quand la connexion à la base échoue …

Après moulte recherche, je pensais que ça pouvait être du à la version 32bits de php alors que je suis en windows 7 64bits, j’ai pensé à un problème de configuration dans php.ini, a un problème de réglage de droit dans le pool d’application, a un complot cosmique dans le but de me rendre fou …

La solution était bien plus simple que ça … Il se trouve que le bon vieux fichier d’hosts de windows 7 (system32/drivers/etc/hosts) a une ligne commentée : 127.0.0.1 localhost
Et moi bien sur, dans mes fichiers include php, pour mes chaines de connexion mysql, j’utilisais localhost comme host … Forcément ça ne risquait pas de marcher.

2 Commentaires :, , , , plus...

A la recherche de quelque chose ?

Utiliser ce champs pour faire votre recherche :

Vous n'avez pas trouvé votre bonheur ? N'hésitez pas à contacter l'auteur de ce blog ou alors laissez un commentaire sur un post !

Les liens !

Quelques liens intéressants...

Les archives

Tout, classé par ordre chronologique ...