Création de trigger depuis PHP

Shivamoon
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 10 Jan 2007

Création de trigger depuis PHP

Message le Ven Jan 12, 2007 0:03

Bonjour,

Je souhaite crée sur une table un trigger, j'y arrive très bien en passant par une console Mysql sous Linux mais rien à faire si j'essaie de le crée avec du PHP ex avec un truc dans ce genre :
Code: Tout sélectionner
$trigger = 'DELIMITER |
CREATE TRIGGER delete_customer AFTER DELETE ON osc_customers
  FOR EACH ROW BEGIN
  DELETE FROM db_net.osc_customers
  WHERE customers_id = old.customers_id
  AND IDC = 33;
END;|
DELIMITER ;';

mysql_query($trigger);


Est-il seulement possible de le crée en console ?

fablezouave
WRInaute discret
WRInaute discret
 
Messages: 109
Inscription: 20 Déc 2006

Message le Ven Jan 12, 2007 10:20

salut

Avec mysql_query(), tu ne peux pas envoyer plusieurs requètes (séparées donc par un point-virgule), il te faut les envoyer séparémment. De plus, l'extension mysql n'est pas faite pour être utilisée avec une base de donnée mysql >=5. Si tu le peux, utilise l'extension mysqli ou PDO

http://php.net/mysqli
http://php.net/pdo

fab

Shivamoon
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 10 Jan 2007

Message le Ven Jan 12, 2007 13:19

En effet mysqli est la solution :

Code: Tout sélectionner
<?php
$link = mysqli_connect("192.168.1.1", "user", "pass", "db_bt_B740zp98wDPBU7Daa8BO");

if (mysqli_connect_errno()) {
    echo mysqli_connect_error();
    exit();
} else {
    echo 'connexion reussie !<br>';
}

$query = 'CREATE TRIGGER delete_customer AFTER DELETE ON db_bt_B740zp98wDPBU7Daa8BO.osc_customers FOR EACH ROW
BEGIN
  DELETE FROM db_net.osc_customers
  WHERE customers_id = old.customers_id
  AND IDC = 33;
END;';
$result = mysqli_query($link, $query);

echo mysqli_error($link);
mysqli_close($link);
?>


Merci bien de votre aide :)


OJAL
WRInaute passionné
WRInaute passionné
 
Messages: 1178
Inscription: 10 Avr 2003

Message le Sam Jan 13, 2007 16:45

En 2 ou 3 mots, pourquoi utiliser un trigger???
Si vous aviez un exemple concrêt ça serait l'idéal ;-)

Shivamoon
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 4
Inscription: 10 Jan 2007

Message le Lun Jan 15, 2007 4:30

C'est simple, j'ai une base maître et des bases esclaves. Je souhaite que quand dans ces dernières des données sont insérées, modifiées ou effacées, elles le soient aussi dans la base maître. J'utilise des trigers pour cela sur chacunes des tables des bases esclaves.

fablezouave
WRInaute discret
WRInaute discret
 
Messages: 109
Inscription: 20 Déc 2006

Message le Lun Jan 15, 2007 8:29

Un trigger (ou declencheur) est une action declenchée automatiquement suite à une autre. Pour un forum, par exemple, tu peux imaginer un trigger : lorsque un message est supprimé, un trigger est appellé et efface tous les messages enfants.

fab


OJAL
WRInaute passionné
WRInaute passionné
 
Messages: 1178
Inscription: 10 Avr 2003

Message le Lun Jan 15, 2007 14:09

fablezouave a écrit:Un trigger (ou declencheur) est une action declenchée automatiquement suite à une autre. Pour un forum, par exemple, tu peux imaginer un trigger : lorsque un message est supprimé, un trigger est appellé et efface tous les messages enfants.

fab


Merci fablezouave,

Ce que tu nous explique est en général codé dans le secript PHP par exemple... Qu'apporte de plus cette notion de Trigger...?
Scuses, j'ai du mal à comprendre... :oops:

fablezouave
WRInaute discret
WRInaute discret
 
Messages: 109
Inscription: 20 Déc 2006

Message le Lun Jan 15, 2007 14:17

OJAL a écrit:Ce que tu nous explique est en général codé dans le secript PHP par exemple... Qu'apporte de plus cette notion de Trigger...?
Scuses, j'ai du mal à comprendre... :oops:


* De ne pas avoir à le coder en PHP
* d'augmenter la rapidité d'exécution des scripts, le trigger est lancé comme tâche de fond
* facilité de maintenance

par exemple


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités