DELIMITER //
CREATE TRIGGER update_niveau_personnage
AFTER UPDATE ON personnage_quete
FOR EACH ROW
BEGIN
IF NEW.date_fin IS NOT NULL THEN
UPDATE personnages
SET niveau = niveau + (SELECT recompense_xp FROM quêtes WHERE id = NEW.quete_id)
WHERE id = NEW.personnage_id;
END IF;
END; //
DELIMITER ;

ex 2

<?php
// Connexion à la base de données
$host = “localhost”;
$dbname = “warcraft”;
$user = “root”;
$password = “”;
$dsn = “mysql:host=$host;dbname=$dbname”;
$pdo = new PDO($dsn, $user, $password);

// Récupérer les identifiants du personnage et de la quête à partir d’un formulaire ou autre source (ici, définis manuellement)
$personnage_id = 1;
$quete_id = 2;

// Requête pour mettre à jour la date_fin de la quête dans la table ‘personnage_quete’
$sql = “UPDATE personnage_quete SET date_fin = NOW() WHERE personnage_id = :personnage_id AND quete_id = :quete_id AND date_fin IS NULL”;
$stmt = $pdo->prepare($sql);
$stmt->bindParam(‘:personnage_id’, $personnage_id, PDO::PARAM_INT);
$stmt->bindParam(‘:quete_id’, $quete_id, PDO::PARAM_INT);

// Exécution de la requête, ce qui déclenchera le trigger pour mettre à jour le niveau du personnage
if ($

ex 3

DELIMITER //

CREATE TRIGGER niveau_up
AFTER UPDATE ON personnages
FOR EACH ROW
BEGIN
IF NEW.experience >= 100 THEN
UPDATE personnages
SET niveau = niveau + 1,
experience = experience – 100
WHERE id = NEW.id;
END IF;
END;
//
DELIMITER ;

 

<?php
$mysqli = new mysqli(“localhost”, “username”, “password”, “database”);

$sql = “UPDATE personnages SET experience=experience+? WHERE id=?;”;
$stmt = $mysqli->prepare($sql);
$stmt->bind_param(“ii”, $exp_gagne, $personnage_id);
$stmt->execute();
$stmt->close();
$mysqli->close();
?>

ex3

DELIMITER //
CREATE TRIGGER level_check
BEFORE INSERT ON characters
FOR EACH ROW
BEGIN
IF NEW.level < 1 OR NEW.level > 60 THEN
SET NEW.level = 1;
END IF;
END;
//
DELIMITER ;