Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/02/2007, 00h35   #1
Invité de passage
 
Inscription : février 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 2
Points : 1
Points : 1
Par défaut CREATE table en MySQL 5 - erreur en MySQL 4

Bonjour,
Je souhaite utiliser un code PHP/MySQL afin de suivre la dernière connexion des membres de mon site. Ce code fonctionne très bien avec MySQL 5, mais pas avec MySQL 4 (qui est la version fournie par mon hébergeur, donc pas le choix ...). J'ai cherché dans les docs des deux versions, mais mes essais n'ont pas été fructueux ...

Voici ce que je souhaite faire :
1 - Créer une table avec deux champs : id du membre + date/heure de la dernière connexion.
Code :
1
2
 
CREATE TABLE `suivi` (`user_id` int(11) NOT NULL DEFAULT '0',`lastping` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY  (`user_id`));
2 - En fonction des connexions des membres, mettre à jour l'entrée correspondante dans la table, ou insérer une nouvelle entrée.
Si l'utilisateur existe déjà dans la table de suivi :
Code :
1
2
 
UPDATE suivi SET lastping = '$datetime_stamp' WHERE user_id = '$user_id'
Si l'utilisateur n'existe pas encore dans la table de suivi :
Code :
1
2
 
INSERT INTO suivi VALUES('$user_id', '$datetime_stamp')
J'ai une erreur dès la création de la table : on me demande de vérifier le manuel de ma version MySQL car il n'est apparemment pas possible d'utiliser current_timestamp avec on update dans un CREATE.

Est-il possible de faire la même chose en MySQL 4 ? Si oui, comment ?
D'avance merci pour vos réponses ou les pistes que vous pouvez m'indiquer.
sevamax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2007, 08h47   #2
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
C'est curieux que ça marche en v5:
Citation:
Une valeur DEFAULT doit être une constante, ¸a ne peut être une fonction ou une expression. Cela signifie notamment que vous ne pouvez pas donner une valeur par défaut à une colonne de date, le résultat de la fonction NOW() ou CURRENT_DATE.
http://dev.mysql.com/doc/refman/5.0/...ate-table.html
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2007, 14h00   #3
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
l'option DEFAULT CURRENT TIMESTAMP est un ajout de la version 4.1 ; elle ne fait que rendre explicite ce qui était déjà le comportement des TIMESTAMP. Il suffit que tu l'enlèves et tout fonctionnera à l'identique.
cf. http://dev.mysql.com/doc/refman/4.1/...p-pre-4-1.html
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2007, 23h50   #4
Invité de passage
 
Inscription : février 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 2
Points : 1
Points : 1
Bonjour,

Merci pour vos réponses ! J'ai enlevé l'option current time_stamp et je n'ai plus de problème lors de la création de la table.

Encore merci et à bientôt !
sevamax est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h54.


 
 
 
 
Partenaires

Hébergement Web