MySQL数据库TIMESTAMP设置默认值的几个应用实例

数据库 MySQL
本文我们主要介绍了MySQL数据库TIMESTAMP设置默认值的几个应用实例,希望能够对您有所帮助。

之前我们介绍了:MySQL数据库TIMESTAMP设置默认值的灵活运用,本次我们接着上次的内容介绍几个MySQL数据库TIMESTAMP设置默认值的几个应用实例,希望能够对您有所帮助。

#1查看表定义,可以看到b列有个属性ON UPDATE CURRENT_TIMESTAMP,导致更新数据时,即便未涉及到该列,该列数据也被自动更新。另一方面,c列默认值是'0000-00-00 00:00:00',实际插入已经被自动赋值为current_timestamp。

  1. root@localhost:test >show create table dj1\G  
  2. *************************** 1. row ***************************  
  3. Table: dj1  
  4. Create Table: CREATE TABLE `dj1` (  
  5. `a` char(1) COLLATE utf8_bin DEFAULT NULL,  
  6. `b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  
  7. `c` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',  
  8. UNIQUE KEY `dj1_idx_u1` (`b`)  
  9. ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin 
  10. 1 row in set (0.00 sec) 

#2创建表dj2,列b不带自动更新属性。

  1. root@localhost:test >CREATE TABLE `dj2` (  
  2. -> `a` char(1) COLLATE utf8_bin DEFAULT NULL,  
  3. -> `b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,  
  4. -> `c` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',  
  5. -> UNIQUE KEY `dj1_idx_u1` (`b`)  
  6. -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;  
  7. Query OK, 0 rows affected (0.01 sec) 

#3插入dj2测试数据

  1. root@localhost:test >insert into dj2 values (1,null,null);   
  2. Query OK, 1 row affected (0.00 sec)  
  3. root@localhost:test >insert into dj2 values (2,null,null);   
  4. Query OK, 1 row affected (0.00 sec) 

#4查看dj2数据

  1. root@localhost:test >select * from dj2;  
  2. +------+---------------------+---------------------+  
  3. | a | b | c |  
  4. +------+---------------------+---------------------+  
  5. | 1 | 2009-09-09 14:02:55 | 2009-09-09 14:02:55 |   
  6. | 2 | 2009-09-09 14:03:00 | 2009-09-09 14:03:00 |   
  7. +------+---------------------+---------------------+  
  8. 2 rows in set (0.00 sec) 

#5dj2上创建***索引

  1. root@localhost:test >create unique index dj2_idx_u1 on dj2(b);  
  2. Query OK, 2 rows affected (0.02 sec)  
  3. Records: 2 Duplicates: 0 Warnings: 0  
  4. #更新数据成功  
  5. root@localhost:test >update dj2 set a=9;  
  6. Query OK, 2 rows affected (0.00 sec)  
  7. Rows matched: 2 Changed: 2 Warnings: 0  
  8. root@localhost:test >select * from dj2;  
  9. +------+---------------------+---------------------+  
  10. | a | b | c |  
  11. +------+---------------------+---------------------+  
  12. | 9 | 2009-09-09 14:02:55 | 2009-09-09 14:02:55 |   
  13. | 9 | 2009-09-09 14:03:00 | 2009-09-09 14:03:00 |   
  14. +------+---------------------+---------------------+  
  15. 2 rows in set (0.00 sec) 

#6创建表dj3,b列默认值为CURRENT_TIMESTAMP,c列默认值为CURRENT_TIMESTAMP带自动更新属性,报错,不允许行为。

  1. root@localhost:test >CREATE TABLE `dj3` (  
  2. -> `a` char(1) COLLATE utf8_bin DEFAULT NULL,  
  3. -> `b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,  
  4. -> `c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  
  5. -> UNIQUE KEY `dj1_idx_u1` (`b`)  
  6. -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;  
  7. ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause 

#7创建表dj4,b列默认值为CURRENT_TIMESTAMP,c列默认值为'0000-00-00 00:00:00'带自动更新属性,报错,不允许行为。

  1. root@localhost:test >CREATE TABLE `dj4` (  
  2. -> `a` char(1) COLLATE utf8_bin DEFAULT NULL,  
  3. -> `b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,  
  4. -> `c` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,  
  5. -> UNIQUE KEY `dj1_idx_u1` (`b`)  
  6. -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;  
  7. ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause 

#8创建表dj5,b列默认值为CURRENT_TIMESTAMP带自动更新属性,c列默认值为CURRENT_TIMESTAMP,报错,不允许行为。

  1. root@localhost:test >CREATE TABLE `dj5` (  
  2. -> `a` char(1) COLLATE utf8_bin DEFAULT NULL,  
  3. -> `b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  
  4. -> `c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,  
  5. -> UNIQUE KEY `dj1_idx_u1` (`b`)  
  6. -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;  
  7. ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause 

以上就是MySQL数据库TIMESTAMP设置默认值的几个应用实例,本文就介绍到这里,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. Oracle 11g R2数据库示例用户安装说明
  2. Oracle 11g数据库审计功能应用实例解析
  3. Oracle 11g数据库默认审计选项说明详解
  4. Oracle 11g数据库使用XML Table的BUG解决
  5. PowerDesigner15连接Oracle出错的解决方案
责任编辑:赵鹏 来源: ChinaUnix博客
相关推荐

2011-08-23 18:30:59

MySQLTIMESTAMP

2021-02-25 13:40:17

MySQL数据库默认值

2010-11-23 16:49:42

MySQL设置当前时间

2022-06-21 08:13:34

MySQL查询数据库

2009-12-18 17:07:14

2010-09-16 10:56:46

sqlserver建表

2010-05-12 18:41:34

MySQL数据库

2010-10-22 15:36:57

2010-09-28 10:23:36

SQL修改字段

2010-05-31 15:23:02

MySQL数据库NUL

2010-05-25 14:42:14

MySQL 数据库

2009-09-11 12:31:15

C# WinForm控设置默认值

2010-04-13 10:55:35

Oracle数据库

2012-08-01 09:50:11

交互设计UI设计

2011-08-18 10:36:24

SQL ServerISNULL函数

2010-05-13 13:49:09

MySQL数据库

2010-06-09 17:36:45

MySQL数据库同步

2019-10-12 16:15:13

MySQL数据库多实例

2011-07-05 16:08:10

2011-07-12 16:41:14

mysql处理异常
点赞
收藏

51CTO技术栈公众号