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 
    在创建新记录的时候把这个字段设置为给定值,以后修改时刷新它

    正因为来之不易,所以才有了后来的倍加珍惜。
  • 相关阅读:
    PHP 学习1- 函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
    ja_charity模板研究
    迭代创建级联目录
    迭代和递归的区别
    递归删除目录
    PHP递归仿DOS的tree命令
    深入理解递归
    wamp默认函数嵌套98层,否则报Fatal error: Maximum function nesting level of '100' reached, aborting!
    静态static方法中调运非静态方法
    微信支付05
  • 原文地址:https://www.cnblogs.com/jjxhp/p/9378974.html
Copyright © 2011-2022 走看看