CREATE TABLE `settings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`k` varchar(200) NOT NULL,
`v` varchar(2000) DEFAULT NULL,
`time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `k` (`k`)
) ;
问题:1、我想把time的默认值设置为NOW(),但是mysql似乎只支持常量默认值。有什么办法吗?2、我想create trigger,每次更新的时候自动更新time字段,该如何写呢?
解决方案 »
- 关于mysql order索引问题
- 通过父节点ID查询所有子节点ID,报错:data too long for column
- JAEE 读写 XML文件路径问题
- 大家来看看这个查询怎么写?
- mysql 大数据量问题
- 我查询空值的记录为什么没有结果?用这一句select count(*) from emp where phone is null???
- Windows 下安装mysql 配置的最大连接数是多少,急救急救急救
- 我在windows98获2000里怎么访问postgres 数据库
- MySQL select 查询语句 报错 Out of memory
- 求一个sql语句或存储过程
- mysql外键
- 如何update一个表中的多个列?
iihero>>:
1. 有。使用timestamp类型,而不是datetime类型。如果你用的是datetime类型,可以将列类型改成timestamp类型。mysql似乎只支持常量默认值,但有一个例外,那就是timestamp类型。详见:http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html2. 不用创建trigger了。使用col timestamp default current_timestamp ON UPDATE CURRENT_TIMESTAMP
后边的on update子句表示它可以在更新的时候自动更新此字段的值。示例:
mysql> create table t_defaultdate(id int not null auto_increment primary key, col2 timestamp default current_timestamp ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.02 sec)mysql> insert into t_defaultdate values(null, null);
Query OK, 1 row affected (0.00 sec)mysql> select * from t_defaultdate;
+----+---------------------+
| id | col2 |
+----+---------------------+
| 1 | 2010-05-02 06:12:09 |
+----+---------------------+
1 row in set (0.00 sec)mysql> update t_defaultdate set id = 2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql> select * from t_defaultdate;
+----+---------------------+
| id | col2 |
+----+---------------------+
| 2 | 2010-05-02 06:12:27 |
+----+---------------------+
1 row in set (0.00 sec)mysql>
`id` int(11) NOT NULL AUTO_INCREMENT,
`k` varchar(200) NOT NULL,
`v` varchar(2000) DEFAULT NULL,
`time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `k` (`k`)
) ;