mysql多个TimeStamp设置_MySQL
bitsCN.com
timestamp设置默认值是Default CURRENT_TIMESTAMP
timestamp设置随着表变化而自动更新是ON UPDATE CURRENT_TIMESTAMP
但是由于
一个表中至多只能有一个字段设置CURRENT_TIMESTAMP
两行设置DEFAULT CURRENT_TIMESTAMP是不行的。
还有一点要注意
CREATE TABLE `device` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `toid` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'toid', `createtime` TIMESTAMP NOT NULL COMMENT '创建时间', `updatetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后更新时间', PRIMARY KEY (`id`), UNIQUE INDEX `toid` (`toid`))COMMENT='设备表'COLLATE='utf8_general_ci'ENGINE=InnoDB;
像这个设置也是不行的。
原因是mysql会默认为表中的第一个timestamp字段(且设置了NOT NULL)隐式设置DEFAULAT CURRENT_TIMESTAMP。所以说上例那样的设置实际上等同于设置了两个CURRENT_TIMESTAMP。
分析需求
一个表中,有两个字段,createtime和updatetime。
1 当insert的时候,sql两个字段都不设置,会设置为当前的时间
2 当update的时候,sql中两个字段都不设置,updatetime会变更为当前的时间
这样的需求是做不到的。因为你无法避免在两个字段上设置CURRENT_TIMESTAMP
解决办法有几个:
1 使用触发器。
当insert和update的时候触发器触发时间设置。
网上有人使用这种方法。当然不怀疑这个方法的可用性。但是对于实际的场景来说,无疑是为了解决小问题,增加了复杂性。
2 将第一个timestamp的default设置为0
表结构如下:
CREATE TABLE `device` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `toid` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'toid', `createtime` TIMESTAMP NOT NULL DEFAULT 0 COMMENT '创建时间', `updatetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', PRIMARY KEY (`id`), UNIQUE INDEX `toid` (`toid`))COMMENT='设备表'COLLATE='utf8_general_ci'ENGINE=InnoDB;
这样的话,你需要的插入和更新操作变为:
insert into device set toid=11,createtime=null;
update device set toid=22 where id=1;
这里注意的是插入操作的createtime必须设置为null!!
虽然我也觉得这种方法很不爽,但是这样只需要稍微修改insert操作就能为sql语句减负,感觉上还是值得的。这也确实是修改数据库最小又能保证需求的方法了。当然这个方法也能和1方法同时使用,就能起到减少触发器编写数量的效果了。
3 老老实实在sql语句中使用时间戳。
这个是最多人也是最常选择的
表结构上不做过多的设计:
CREATE TABLE `device` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `toid` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'toid', `createtime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updatetime` TIMESTAMP NOT NULL COMMENT '最后更新时间', PRIMARY KEY (`id`), UNIQUE INDEX `toid` (`toid`))COMMENT='设备表'COLLATE='utf8_general_ci'ENGINE=InnoDB;
这样你就需要在插入和update的操作的时候写入具体的时间戳。
insert device set toid=11,createtime=’2012-11-2 10:10:10’,updatetime=’2012-11-2 10:10:10’
update device set toid=22,updatetime=’2012-11-2 10:10:10’ where id=1
其实反观想想,这样做的好处也有一个:current_timestamp是mysql特有的,当数据库从mysql转移到其他数据库的时候,业务逻辑代码是不用修改的。
ps:这三种方法的取舍就完全看你自己的考虑了。顺便说一下,最后,我还是选择第三种方法。
bitsCN.com
Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

NEARProtocol : une plateforme blockchain évolutive et conviviale NEARProtocol est une plateforme blockchain utilisant la technologie de partitionnement conçue pour relever les défis rencontrés par la technologie blockchain en termes d'évolutivité, de convivialité et de sécurité. Il fournit aux développeurs une plate-forme efficace et conviviale qui leur permet de créer et de déployer facilement des applications décentralisées (dApps). NEARProtocol est conçu pour réduire les obstacles au développement de la blockchain tout en offrant un haut degré d'efficacité et de sécurité. En adoptant la technologie de partitionnement, NEARProtocol peut mieux gérer les transactions à grande échelle et offrir aux utilisateurs des délais de confirmation de transaction plus rapides. Dans l'ensemble, NEARProtocol est conçu pour fournir

Titre : Déclarations et exemples de code spécifiques pour afficher les données de table dans MySQL MySQL est un système de gestion de base de données relationnelle open source largement utilisé dans des applications de toutes tailles. Dans MySQL, l'affichage des données d'une table est une opération très basique. Ce qui suit présente comment implémenter cette opération à travers des instructions spécifiques et des exemples de code. Tout d'abord, nous présenterons les instructions et les exemples de code spécifiques pour afficher les données de table via l'outil de ligne de commande MySQL. Supposons que nous ayons une table nommée "employés", voici le laissez-passer

Dans la base de données Oracle, la définition d'autorisations en lecture seule sur les tables est une opération très importante, qui peut protéger la sécurité des données et éviter les erreurs d'opération. Ce qui suit explique comment définir des autorisations en lecture seule sur les tables d'une base de données Oracle et fournit des exemples de code spécifiques. Tout d'abord, nous devons comprendre que dans la base de données Oracle, les utilisateurs obtiennent des autorisations sur les tables via une autorisation. Les autorisations de table incluent les opérations SELECT (requête), INSERT (insertion), UPDATE (mise à jour) et DELETE (suppression). Nous présenterons ici

Utilisez MySQL pour créer une table système de recommandation afin d'implémenter la fonction du système de recommandation. Le système de recommandation est un système utilisé pour recommander du contenu personnalisé aux utilisateurs en fonction de leurs préférences et de leurs comportements. Dans le système de recommandation, la base de données est un composant clé qui stocke des informations telles que les données utilisateur, les données d'élément et les données d'interaction utilisateur-élément. En tant que système de gestion de base de données relationnelle couramment utilisé, MySQL peut être utilisé pour créer des tables de système de recommandation et implémenter les fonctions du système de recommandation. Cet article expliquera comment utiliser MySQL pour créer une table système de recommandation et la démontrera à travers des exemples de code.

Combien de broches possède le câble de la carte mère Antec 650w ? Le câble d'alimentation de la carte mère d'alimentation Antec 650W est généralement composé de 24 broches, ce qui constitue la plus grande interface d'alimentation de la carte mère. Sa fonction est de connecter la carte mère et l'alimentation électrique pour alimenter la carte mère et les autres composants du système. De plus, l'alimentation Antec 650W peut également inclure d'autres types d'interfaces d'alimentation, telles que CPU8pin, PCIe6+2pin, etc., pour connecter d'autres composants tels que le CPU et les cartes graphiques indépendantes. Tutoriel sur le routage de la carte mère Le routage de la carte mère est le processus de connexion de circuits entre divers composants électroniques lors de la conception d'une carte mère. Dans ce processus, des facteurs tels que la stabilité du circuit, la vitesse de transmission du signal et la précision doivent être pris en compte. Lorsque vous acheminez le câblage selon le schéma de circuit, faites attention à la disposition et sélectionnez la largeur et la distance de ligne appropriées à éviter.

Un boîtier d'ordinateur Microsoft est un étui utilisé pour protéger votre ordinateur. Il offre non seulement une protection supplémentaire mais ajoute également un effet décoratif. Pour ceux qui souhaitent ajouter des éléments personnalisés à leur ordinateur, les boîtiers d'ordinateur Microsoft sont un choix idéal. Le tableau de configuration recommandée des boîtiers d'ordinateur Microsoft est un tableau détaillé qui répertorie les configurations recommandées pour différents modèles et spécifications de boîtiers d'ordinateur Microsoft. Nous présenterons en détail le tableau de configuration recommandé des boîtiers d'ordinateur Microsoft et en expliquerons certains aspects. 1. Modèles applicables Dans le tableau de configuration recommandé, la première chose à considérer concerne les modèles applicables de boîtiers d'ordinateur Microsoft. Différents modèles de boîtiers d'ordinateur Microsoft peuvent avoir des tailles et des formes différentes, vous devez donc choisir le boîtier approprié en fonction de votre modèle d'ordinateur. Le tableau de configuration répertorie les microcontrôleurs applicables aux différents modèles.

MySQL est un système de gestion de base de données relationnelle couramment utilisé qui prend en charge l'opération de renommage des tables. Normalement, renommer une table comporte certains risques, vous devez donc être très prudent lorsque vous effectuez cette opération. Dans cet article, nous explorerons comment implémenter l'instruction rename table dans MySQL et fournirons des exemples de code détaillés. Dans MySQL, vous pouvez utiliser l'instruction ALTERTABLE pour renommer une table. Voici la syntaxe de base de l'instruction de renommage ALTERTABLE : ALTERTABLEo

MySQL crée des tables de droits d'utilisateur pour implémenter des fonctions de gestion des droits d'utilisateur. MySQL est un système de gestion de base de données relationnelle couramment utilisé qui fournit de puissantes fonctions de gestion des droits d'utilisateur. Dans un environnement de base de données multi-utilisateurs, il est très important de gérer correctement les autorisations des utilisateurs. Cet article présentera comment implémenter la fonction de gestion des droits des utilisateurs en créant une table des droits des utilisateurs et l'illustrera à travers des exemples de code. 1. Créer une table d'autorisations Tout d'abord, nous devons créer une table d'autorisations pour stocker les informations d'autorisation de l'utilisateur. Les champs de la table d'autorisation incluent l'ID utilisateur (user_
