zoukankan      html  css  js  c++  java
  • MYSQL中TIMESTAMP类型的默认值理解

    MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样。

    1、自动UPDATE 和INSERT 到当前的时间:
    表:
    ———————————

    Table   Create Table                                                                         
    —— ————————————————————————————-
    t1      CREATE TABLE `t1` (                                                                  
              `p_c` int(11) NOT NULL,                                                            
              `p_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
            ) ENGINE=InnoDB DEFAULT CHARSET=gb2312                                              

    数据:

    1    2017-04-17 11:53:35
    2    2017-04-17 11:54:00

    insert into t1(p_c) select 3;
    update t1 set p_c = 2 where p_c = 5;

    数据:

    1    2017-04-17 11:53:35
    5    2017-04-17 12:00:37
    3    2017-04-17 12:00:37

    2、自动INSERT 到当前时间,不过不自动UPDATE。

    表:
    ———————————

    Table   Create Table                                             
    —— ———————————————————
    t1      CREATE TABLE `t2` (                                      
              `p_c` int(11) NOT NULL,                                
              `p_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
            ) ENGINE=InnoDB DEFAULT CHARSET=gb2312                  

    数据:
    insert into t2(p_c) select 4;
    update t2 set p_c = 3 where p_c = 5;

    1    2017-04-17 11:53:35
    2    2017-04-17 12:00:37
    5    2017-04-17 12:00:37
    4    2017-04-17 12:05:19

    3、一个表中不能有两个字段默认值是当前时间,否则就会出错。不过其他的可以。
    表:
    ———————————

    Table   Create Table                                                   
    —— —————————————————————
    t1      CREATE TABLE `t1` (                                            
              `p_c` int(11) NOT NULL,                                      
              `p_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,       
              `p_timew2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' 
            ) ENGINE=InnoDB DEFAULT CHARSET=gb2312                        

    数据:
    1    2017-04-17 11:53:35    0000-00-00 00:00:00
    2    2017-04-17 12:00:37    0000-00-00 00:00:00
    3    2017-04-17 12:00:37    0000-00-00 00:00:00
    4    2017-04-17 12:05:19    0000-00-00 00:00:00

    TIMESTAMP的变体
    1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    在创建新记录和修改现有记录的时候都对这个数据列刷新

    2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它

    3,TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    在创建新记录的时候把这个字段设置为0,以后修改时刷新它

    4,TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP 
    在创建新记录的时候把这个字段设置为给定值,以后修改时刷新它

    正因为来之不易,所以才有了后来的倍加珍惜。
  • 相关阅读:
    服务器×××上的MSDTC不可用解决办法
    安装VS2010后,更改iis的asp.net版本
    刷新后 页面 保持滚动条位置
    Atitit.java 反编译 工具  attilax 总结
    Atitit.收银系统模块架构attilax 总结
    Atitit.论垃圾文件的识别与清理 文档类型垃圾文件 与api概要设计pa6.doc
    atitit.guice3 绑定方式打总结生成非单例对象toInstance toProvider区别 v2 pb29
    Atitit. Derby的使用总结attilax
    Atitit.attilax的 case list 项目经验 案例列表
    Atitit.收银系统pos 以及打印功能的行业标准
  • 原文地址:https://www.cnblogs.com/jjxhp/p/9378974.html
Copyright © 2011-2022 走看看