Comment définir une valeur par défaut pour une colonne MySQL de type datetime ?
Dans SQL Server, c'est getdate()
. Quel est l'équivalent pour MySQL ? J'utilise MySQL 5.x, si c'est un facteur.
Comment définir une valeur par défaut pour une colonne MySQL de type datetime ?
Dans SQL Server, c'est getdate()
. Quel est l'équivalent pour MySQL ? J'utilise MySQL 5.x, si c'est un facteur.
Vous pouvez utiliser des déclencheurs pour faire ce genre de choses.
CREATE TABLE `MyTable` (
`MyTable_ID` int UNSIGNED NOT NULL AUTO_INCREMENT ,
`MyData` varchar(10) NOT NULL ,
`CreationDate` datetime NULL ,
`UpdateDate` datetime NULL ,
PRIMARY KEY (`MyTable_ID`)
)
;
CREATE TRIGGER `MyTable_INSERT` BEFORE INSERT ON `MyTable`
FOR EACH ROW BEGIN
-- Set the creation date
SET new.CreationDate = now();
-- Set the udpate date
Set new.UpdateDate = now();
END;
CREATE TRIGGER `MyTable_UPDATE` BEFORE UPDATE ON `MyTable`
FOR EACH ROW BEGIN
-- Set the udpate date
Set new.UpdateDate = now();
END;
Pour tous ceux qui ont perdu courage en essayant de définir une valeur par défaut DATETIME valeur dans MySQL Je sais exactement ce que vous ressentez. Alors voilà :
ALTER TABLE `table_name` CHANGE `column_name` DATETIME NOT NULL DEFAULT 0
Observez attentivement que Je n'ai pas ajouté de guillemets simples/doubles. autour de la 0
Je suis littéralement en train de sauter après avoir résolu ce problème :D
Si vous avez déjà créé la table alors vous pouvez utiliser
Pour changer la valeur par défaut en date et heure actuelles
ALTER TABLE <TABLE_NAME>
CHANGE COLUMN <COLUMN_NAME> <COLUMN_NAME> DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
Pour changer la valeur par défaut en '2015-05-11 13:01:01'.
ALTER TABLE <TABLE_NAME>
CHANGE COLUMN <COLUMN_NAME> <COLUMN_NAME> DATETIME NOT NULL DEFAULT '2015-05-11 13:01:01';
MySQL 5.6 a corrigé ce problème .
ALTER TABLE mytable CHANGE mydate datetime NOT NULL DEFAULT 'CURRENT_TIMESTAMP'
C'est en effet une terrible nouvelle. Voici une demande de bogue/de fonctionnalité en attente depuis longtemps à ce sujet . cette discussion parle également des limites du type de données timestamp.
Je me demande sérieusement quel est le problème pour que cette chose soit mise en œuvre.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
7 votes
J'utilise CURRENT_TIMESTAMP dans ma table mysql (pas dans la requête), peut-être que cela peut être utile aussi.
19 votes
Cette fonctionnalité a maintenant été ajoutée à MySQL 5.6.5. J'espère que cela aidera quelqu'un. optimize-this.blogspot.co.uk/2012/04/
0 votes
@GhostInTheSecureShell toute une mission pour l'installer, au moins sur Debian, mais définitivement une fonctionnalité géniale. Je pense qu'un jour toutes ces questions "deux CURRENT_TIMESTAMP" seront résolues !
0 votes
Il s'agit de la fonction now(), sinon vous pouvez utiliser les paramètres par défaut au niveau des colonnes.