我想将mysql表中的id设置为默认值,比如'000001'或'TodaysDate后跟000001'..同样也应该是auto_incremented。我们应该怎么做?
以及如何在 TIMESTAMP 列中设置默认值,而不是使用“2012-04-01”等“CURRENT_TIMESTAMP”,以及当更新触发器触发时,它应该使用今天的日期进行更新。
这个怎么做?
我想将mysql表中的id设置为默认值,比如'000001'或'TodaysDate后跟000001'..同样也应该是auto_incremented。我们应该怎么做?
以及如何在 TIMESTAMP 列中设置默认值,而不是使用“2012-04-01”等“CURRENT_TIMESTAMP”,以及当更新触发器触发时,它应该使用今天的日期进行更新。
这个怎么做?
看起来您回答了自己的问题:特别是您想要一个“插入/更新之前”触发器来为您设置值。
CREATE TRIGGER my_autoinc BEFORE INSERT ON test1
FOR EACH BEGIN
INSERT INTO test1 SET NEW.id_column = concat(today(), <some value>);
结尾;
If I were you I will leave it like id int, auto increment and when make the select I'll use the lpad function:
mysql> select lpad('1',6,'0');
+-----------------+
| lpad('1',6,'0') |
+-----------------+
| 000001 |
+-----------------+
1 row in set (0.00 sec)
关于时间戳我会让其他人回答,因为我的想法是做同样的事情,使用 current_timestamp 并使用 mysql 函数转换为你想要的方式:
mysql> select left(now(),10);
+----------------+
| left(now(),10) |
+----------------+
| 2012-06-01 |
+----------------+
1 row in set (0.00 sec)'
编辑:
mysql> select concat(replace(left(now(),10),'-',''),lpad('1',6,'0'));
+--------------------------------------------------------+
| concat(replace(left(now(),10),'-',''),lpad('1',6,'0')) |
+--------------------------------------------------------+
| 20120601000001 |
+--------------------------------------------------------+
1 row in set (0.00 sec)