问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MySQL timestamp的默认值怎么设置

发布网友 发布时间:2022-04-30 11:56

我来回答

2个回答

懂视网 时间:2022-05-01 02:29

 

业务场景:

例如用户表,我们需要建一个字段是创建时间, 一个字段是更新时间.

解决办法可以是指定插入时间,也可以使用数据库的默认时间.

在mysql中如果设置两个默认CURRENT_TIMESTAMP,会出现这样的错误.

ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause.

错误的建表语句:

CREATE TABLE `db1`.`sms_queue` (
  `Id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `Message` VARCHAR(160) NOT NULL DEFAULT ‘Unknown Message Error‘,
  `CurrentState` VARCHAR(10) NOT NULL DEFAULT ‘None‘,
  `Phone` VARCHAR(14) DEFAULT NULL,
  `Created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `LastUpdated` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
  `TriesLeft` tinyint NOT NULL DEFAULT 3,
  PRIMARY KEY (`Id`)
)
ENGINE = InnoDB;

解决办法,可以使用触发器或者其他,在此还是使用数据库的方式.

建表语句:

create table test_table(
  id integer not null auto_increment primary key,
  stamp_created timestamp default ‘0000-00-00 00:00:00‘,
  stamp_updated timestamp default now() on update now()
);

测试:

 mysql> insert into test_table(stamp_created, stamp_updated) values(null, null); 
Query OK, 1 row affected (0.06 sec)

mysql> select * from t5;
+----+---------------------+---------------------+
| id | stamp_created | stamp_updated |
+----+---------------------+---------------------+
| 2 | 2009-04-30 09:44:35 | 2009-04-30 09:44:35 |
+----+---------------------+---------------------+
2 rows in set (0.00 sec) mysql> update test_table set id = 3 where id = 2; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from test_table;+----+---------------------+---------------------+| id | stamp_created | stamp_updated | +----+---------------------+---------------------+ | 3 | 2009-04-30 09:44:35 | 2009-04-30 09:46:59 | +----+---------------------+---------------------+ 2 rows in set (0.00 sec)
解决办法是在stackoverflow看到的,原文网址:

http://stackoverflow.com/questions/267658/having-both-a-created-and-last-updated-timestamp-columns-in-mysql-4-0

mysql建表设置两个默认CURRENT_TIMESTAMP的技巧

标签:

热心网友 时间:2022-04-30 23:37

CREATE TABLE `test1` (
`a` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`b` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`c` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
建表test1。3个字段 a,b,c

insert into test1 VALUES(NULL,NULL,NULL)
插入的时候设置3字段都是 null

然后成功
Affected rows : 1, Time: 0.00sec
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我爱我家租凭多少提成 我爱我家租房佣金是多少钱 合同上金额可以是打印的吗 合同打印出来能修改吗 淮北一男子因噪声影响自己的睡眠索赔6000元,你觉得这个索赔合理吗... 买房合同签订后不买了,中介有权要回全部中介费 无条件收回房屋是什么意思 房屋尺寸怎样换算? 房子多少米怎么算法 卖二手房可以降低交易成本吗? 手机流量不够用怎么办?广东的 广东移动卡手机流量不够用,怎样添加流量? 高中年末学期评价怎么写啊? 求高中学籍学年评语 学年评语怎么写 辐射4怎么设置中文 辐射4设置中文攻略 什么软件可以免费玩辐射4或76? 辐射4下载!什么版的都好,只要不是要钱的版本就行了,最好是绿色版的 众安百万医疗可以报护理费 重病监护室费用报销吗 银行中长期贷款浮动汇率是什么意思? 为什么南方冬天室内温度比室外温度低? 银行汇款显示外汇是什么意思 鹿角上挂着金色的光,一起来观赏阳光下美丽的雪景 北方多地下雪,为什么南方冬季的气温更高,却感觉比北方还要冷? 为什么银行的汇率和汇率转换器上的不一样 银行的汇率是怎样计算的 拍完雪景回到室内相机一般需要多久可以使用 金融市场学银行报出的汇率1.6830/40是什么意思? 南方的雪景和北方的雪景,哪个更胜一筹? 一个Mysql 默认值的问题 QQ explorer 如何使用啊 ?? 钉钉协同质量的描述 钉钉,想写一篇讲述自己本学期经历的文章内容有点多不知如何下笔请你帮他把文? ppt动画大师支持windows10吗,如果支持,求安装过程? ppt动画大师怎么安装 PPT动画大师在office2013里只能通过“启用宏“使用,会有什么问题么? PPT动画大师的安装 华为手机下载了一个软件但是卸载不掉 一旦按卸载就会重启 手机也时不时重启 该怎么办? 合作协议签了、可以随意退出、要求退款吗 两个人合伙做生意,如果一方要退出怎么办? 和公司签了合作协议,不想干了 合作协议签了,可以随意退出,要求退款吗 请问合伙企业中一位合伙人想退出该怎么办? 怎么退出合伙人 两个人合伙开店半年现在想退出是怎么算的 签了直播合作协议想走怎么办 两个人在一起合伙做生意,如果一方要求退出可以吗? 我们公司注册的个体户但是是合伙经营,签了合伙协议怎么样可以退出 签了合作协议想辞职