每个月的自动增量从mysql的1开始用php

时间:2011-10-26 11:45:56

标签: php mysql auto-increment

我有解决方案,我需要一个表中的id从1开始每月。我正在考虑将月份名称作为主键与id auto incerement一起使用。我错了吗?有人有什么想法吗?

3 个答案:

答案 0 :(得分:3)

MYISAM表示例:

CREATE TABLE table1(
  yearmonth_id INT(11) NOT NULL, -- combination of year and month
  id INT(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (yearmonth_id, id)
)
ENGINE = MYISAM;

INSERT INTO table1 VALUES(201110, NULL);
INSERT INTO table1 VALUES(201110, NULL);
INSERT INTO table1 VALUES(201110, NULL);

INSERT INTO table1 VALUES(201112, NULL);
INSERT INTO table1 VALUES(201112, NULL);
INSERT INTO table1 VALUES(201112, NULL);

INSERT INTO table1 VALUES(201201, NULL);
INSERT INTO table1 VALUES(201201, NULL);
INSERT INTO table1 VALUES(201201, NULL);

SELECT * FROM table1;
+--------------+----+
| yearmonth_id | id |
+--------------+----+
|       201110 |  1 |
|       201110 |  2 |
|       201110 |  3 |
|       201112 |  1 |
|       201112 |  2 |
|       201112 |  3 |
|       201201 |  1 |
|       201201 |  2 |
|       201201 |  3 |
+--------------+----+

答案 1 :(得分:1)

  

我错了吗?

完全。

N.B.的评论应该是一个答案。在这里引用它:

  

为什么每个人都想篡改auto_increment而不是创建自己的触发器并按照自己的方式实现逻辑..只是不要篡改主键,从多个角度来看这是一个坏主意。创建一个触发器以增加其他列中的数字,让主键执行它的操作。

每个新手网络程序员都应该将它刻在桌子上,每天大声朗读3次。

答案 2 :(得分:0)

主键是通常需要简单。大多数系统使用数字的原因是因为在代码中,您只需传递数字来表示数据,如果您不需要,则不必请求所有数据。

您可以拥有一个多列主键,其中一列是月 - 年字符串,另一列是数字自动增量,然后自动增量将在月份更改时自动重复使用数字。这样做的好处是可以直接绑定到表定义中,这样可以更轻松地移动系统。

来源:enter link description here

相关问题