MySQL ids通过适当的系列

时间:2011-03-21 11:58:54

标签: php mysql

我们正在构建发票管理应用程序,需要以下帮助/建议......

  1. 发票应从1开始,按照系列如1 2 3 4 5 6 7 8而不是1 3 4 7
  2. 每个财政年度应该从1开始,例如它应该在2012年再次以1开始
  3. 如何显示2011年1月之前的所有发票,比2010年3月更新的发票意味着财政年度
  4. 我们希望您的建议能够实现这一目标。感谢。

3 个答案:

答案 0 :(得分:3)

你需要复合主键。例如:

year int
invoice_id int

答案 1 :(得分:1)

  1. 增量ID在MySQL中是微不足道的。一个简单的auto_Increment主键列可以解决问题。
  2. 如果没有触发器和/或客户端参与,则无法使用vanilla SQL完成每年的数字回复。
  3. 会计年度业务更像是客户端问题。只需在每个记录中存储“创建时间”时间戳,然后在客户端中确定过滤规则,然后只需执行select ... where date_of_record between $start_of_period and $end_of_period

答案 2 :(得分:1)

以十六进制的答案创建主键。然后使用它来插入一个新的id:

insert into my_table (id, year)
   values (
      coalesce (
      (
         select new_id = max(id) + 1
         from my_table
         where year = @year
      ), 1)
      , @year
   )