MySQL AUTO_INCREMENT根据年份

时间:2014-06-10 01:11:05

标签: php mysql auto-increment

我正在创建一个票务系统,这是我的表结构:

CREATE TABLE tix_sip
(
tktNum INT UNSIGNED NOT NULL,
sipNum INT UNSIGNED AUTO_INCREMENT,
PRIMARY KEY( sipNum ),
FOREIGN KEY(tktNum) REFERENCES Tix (tktNum)
);

我希望我的sipNum想要按照年份编号。

示例:20140001, 20140002, ..20140334, 20140335....

如何让它自动更改前4个数字,以便明年每次来,它会创建新的\另一组AUTO_INCREMENT编号

示例:20150001, 20150002........ 20160001, 20160002..

顺便说一句,我正在使用PHP代码编写我的程序,如果解决方案是创建一个函数可以帮助。感谢

1 个答案:

答案 0 :(得分:0)

您可以使用MySQL Custom AUTO_INCREMENT values,如下所示: (首先阅读文章)

创建表格和触发器:

CREATE TABLE test
(
    id int not null auto_increment primary key,
    year_autonum varchar(20)
);

delimiter //
DROP TRIGGER IF EXISTS custom_autonums_bi//

CREATE TRIGGER custom_autonums_bi BEFORE INSERT ON test
FOR each ROW
BEGIN
   SET NEW.year_autonum = getNextCustomSeq(year(now()),year(now()));
END//

delimiter ;

插入一些值:

insert into test(id) values (null);
insert into test(id) values (null);
insert into test(id) values (null);
...

选择数据:

mysql> select * from test;
+----+--------------+
| id | year_autonum |
+----+--------------+
|  1 | 2014-000001  |
|  2 | 2014-000002  |
|  3 | 2014-000003  |
|  4 | 2014-000004  |
|  5 | 2014-000005  |
|  6 | 2014-000006  |
+----+--------------+
6 rows in set (0.00 sec)

您可以更改getNextCustomSeq程序以省略斜杠-