Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec 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 12/05/2011, 14h42   #1
Membre expérimenté
 
Avatar de tigunn
 
Homme
Développeur de bug
Inscription : janvier 2003
Messages : 516
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur de bug

Informations forums :
Inscription : janvier 2003
Messages : 516
Points : 535
Points : 535
Par défaut CREATE TABLE avec 2 champs TIMESTAMP définit par defaut avec une clause ON UPDATE

Bonjour,
Je souhaiterait créer une table avec la requête suivante:
Code :
1
2
3
4
5
6
7
8
9
10
11
DROP TABLE IF EXISTS `url`;
CREATE TABLE IF NOT EXISTS `url` (
  `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `ID_ci` int(10) UNSIGNED NOT NULL,
  `url` varchar(255) NOT NULL,
  `muid` int(10) UNSIGNED NOT NULL,
  `mtime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `cuid` int(10) UNSIGNED NOT NULL,
  `ctime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='URL' AUTO_INCREMENT=1 ;
Mais MySQL tilt, sur la deuxième déclaration TIMESTAMP DEFAULT CURRENT_TIMESTAMP; voici le message:
Citation:
#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
Comment peut-on outrepasser cette limite?
__________________
"le rhume distillation - L’estomac est la cucurbite, le cerveau le chapiteau, & le nez le réfrigérant par lequel s’écoule goutte à goutte le produit de la distillation."
de Avicenne

Le monde se divise en deux: ceux qui utilisent le tag et les autres.

Un problème? venez en découdre!
tigunn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 14h52   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 000
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 000
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Que représentent mtime et ctime ?
S'il s'agit des heures de création et de modification, il n'est pas très cohérent que mtime ait une valeur par défaut CURRENT_TIMESTAMP à la création. Ça devrait plutôt être DEFAULT NULL.
S'il s'agit de tout autre chose et que les deux heures doivent être réelles à la création d'une ligne, alors il te faut un trigger.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 15h20   #3
Membre expérimenté
 
Avatar de tigunn
 
Homme
Développeur de bug
Inscription : janvier 2003
Messages : 516
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur de bug

Informations forums :
Inscription : janvier 2003
Messages : 516
Points : 535
Points : 535
mtime, ctime sont date de modif et de creation, come tu l'as deviné.
Sinon, si je fait
Code :
1
2
3
4
5
6
7
8
9
10
11
DROP TABLE IF EXISTS `url`;
CREATE TABLE IF NOT EXISTS `url` (
  `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `ID_ci` int(10) UNSIGNED NOT NULL,
  `url` varchar(255) NOT NULL,
  `muid` int(10) UNSIGNED NOT NULL,
  `mtime` TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP,
  `cuid` int(10) UNSIGNED NOT NULL,
  `ctime` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='URL' AUTO_INCREMENT=1 ;
cela ne fonctionne pas, le message est identique.
__________________
"le rhume distillation - L’estomac est la cucurbite, le cerveau le chapiteau, & le nez le réfrigérant par lequel s’écoule goutte à goutte le produit de la distillation."
de Avicenne

Le monde se divise en deux: ceux qui utilisent le tag et les autres.

Un problème? venez en découdre!
tigunn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 15h52   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 000
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 000
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
Idem, il n'est pas logique que la date de création soit mise à jour donc aps de valeur par ON UPDATE !

Et plutôt que DEFAULT 0 pour le mtime, je mettrais DEFAULT NULL.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 18h00   #5
Membre expérimenté
 
Avatar de tigunn
 
Homme
Développeur de bug
Inscription : janvier 2003
Messages : 516
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur de bug

Informations forums :
Inscription : janvier 2003
Messages : 516
Points : 535
Points : 535
Après une 3ème tentative, et quelques renseignements anglophones:
Citation:
This is a limitation of mySQL, you cannot have two TIMESTAMP columns with defaults that reference CURRENT_TIMESTAMP. The only way to do it would be to use a DATETIME type for ts_create which unfortunately cannot have a default value of NOW(). You can roll your own trigger to make that happen though.
plus tard: c'est impossible d'utiliser 2 current_timestamp sur des champs différents et dans une même table.
Sinon, merci de corriger mes fautes d'étourderie
__________________
"le rhume distillation - L’estomac est la cucurbite, le cerveau le chapiteau, & le nez le réfrigérant par lequel s’écoule goutte à goutte le produit de la distillation."
de Avicenne

Le monde se divise en deux: ceux qui utilisent le tag et les autres.

Un problème? venez en découdre!
tigunn 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 11h37.


 
 
 
 
Partenaires

Hébergement Web