我目前正在为一家拥有许多分支机构的公司开发一个小型发票系统。我想知道如何根据每个分支生成不同的发票自动编号。这是我的表结构表invoice_header
:
id | number | cust | grand_total
我应该为每个分支创建不同的表吗?例如invoice_header_1, invoice_header_2 , invoice_header_3
.
制作一个包含分支类型的表格会更好,更可行。然后只向表 invoice_header 添加 1 列,然后在分支表中给出确切分支的 id。
通过这种方式,您可以将这两者连接起来并保持干净整洁。并且更容易编辑。
所以:表 invoice_header id | 号码 | 客户 | 总计| branch_id
表分支id | 分店名称
如果您使用ENGINE=MyISAM
,MySQL 将为您执行此操作:
创建表 invoice_header ( branch_id INT UNSIGNED NOT NULL, id INT UNSIGNED NOT NULL AUTO_INCREMENT, number INT UNSIGNED NOT NULL DEFAULT 1, cust INT UNSIGNED NOT NULL, grand_total DECIMAL(10,2) NOT NULL DEFAULT 0, 主键(branch_id,id) ) 引擎=MyISAM;
MySQL 将为id
列生成一个唯一值,从 1 开始,但对于每个不同的branch_id
. 这仅在引擎为MyISAM
.
在http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html中搜索“多列索引”以获取更多信息。