2010-12-11 23 views
4

Je sais qu'il existe un type de données TIMESTAMP qui met automatiquement à jour la valeur d'horodatage lorsqu'un enregistrement est mis à jour et que j'ai déjà cette colonne. En plus de cela j'aimerais avoir une colonne qui remplit automatiquement à NOW() (ou CURRENT_TIMESTAMP) et ne change jamais, mais MySQL DEFAULT ne semble pas supporter les appels de fonction.MySQL: Existe-t-il un moyen de définir automatiquement le champ datetime pour enregistrer l'horodatage de création?

Veuillez ne poster que des réponses MySQL pures. Je sais comment le faire au niveau de l'application.

EDIT: S'il n'y a pas une telle fonctionnalité - j'apprécierais de l'entendre.

EDIT2: MySQL version est 5.0.32

+0

OK. Ma faute. J'ai oublié de mentionner que je voudrais utiliser REPLACE INTO, et c'est pourquoi je veux que cela se fasse «automatiquement» - sans être explicite à ce sujet. – tishma

+0

vous pouvez, ** MAIS ** seulement un 'default_timestamp' par défaut autorisé – ajreal

Répondre

9

Utilisez un déclencheur pour définir la valeur par défaut.

DELIMITER | 

CREATE 
    TRIGGER trigger_name BEFORE INSERT ON tbl_name FOR EACH ROW 
BEGIN 
    SET NEW.colname = NOW(); 
END; 

|

Essayez celui-ci, y compris le délimiteur.

+0

Je vote en haut. Pourtant, ce n'est pas vraiment une réponse complète ... – tishma

+0

Merci pour le montage. Je vais l'accepter. Btw, PHPMyAdmin aura un problème avec cette déclaration, à cause de ";" c'est utilisé comme délimiteur d'instruction. – tishma

3

Je voudrais avoir une colonne qui renseigne automatiquement à NOW() (ou CURRENT_TIMESTAMP) et ne change jamais

en disant que vous souhaitez qu'il remplir NOW(), il On dirait que vous faites référence à l'initiale INSERT. Si c'est le cas, pouvez-vous l'utiliser? Quelque chose comme

INSERT INTO table (field1,field2,my_datetime) VALUES (1,'a',NOW()) 
+0

Exactement. Seulement ceci n'est pas tout à fait automatique ... Je ne mentionnerai jamais cette colonne dans les instructions INSERT. – tishma

+0

Maintenant, je sais que - je pencherais vers la gâchette. – Riedsio

+0

Je suppose que je vais accepter le déclencheur. Cependant, je suis coincé avec cette version de MySQL, et la création d'un trigger nécessite le privilège SUPER, donc ça ne marche pas vraiment pour moi :( – tishma