Mysql 基于上一个条目的增量数据

Mysql 基于上一个条目的增量数据,mysql,Mysql,您将如何创建这种数据库。我的系统拥有一个数据库,数据库中有多个为客户提供服务的公司用户 我无法想象的是,我如何将数据插入数据库,以便从公司id的上一个增量中提供\u nr增量+1 +----+--------- +------------+----------+ | offer_id (AI) | company_id | offer_nr | +----------+----------+----------+ | 1 | 1001 | 10022

您将如何创建这种数据库。我的系统拥有一个数据库,数据库中有多个为客户提供服务的公司用户

我无法想象的是,我如何将数据插入数据库,以便从公司id的上一个增量中提供\u nr增量+1

+----+--------- +------------+----------+
| offer_id (AI) | company_id | offer_nr | 
+----------+----------+----------+
|  1            | 1001       | 10022    |
|  2            | 1002       | 150      |
|  3            | 1001       | 10023    |
|  4            | 1002       | 151
+----+------------+----------+----------+

别这样

具有自动递增的公司ID以及独立的订单ID。 这就是它的工作原理


数据库中并没有数字这样的东西。数字仅在选择时显示

您可以使用更新前触发器执行此操作。您可以使用这样的触发器根据历史值分配offer_nr的值。关键代码是:

new.offer_nr = (select coalesce(1+max(offer_nr), 1)
                from offers o
                where o.company_id = new.company_id
               )
如果希望保持值的有序性,您可能还希望具有“更新前”和“删除后”触发器


另一种方法是在查询时指定值。您通常会使用一个变量来保存和增加计数。

否,我有不同的表格用于我获得此公司id的公司,也有不同的表格用于我获得报价id的公司。我只是不希望在下一次插入公司id 1001时,报价编号为10024。是的,您必须有不同的表格用于公司。不,用这种方法计算订单没有意义。你能给我一些表格的例子吗?因为每个客户都想在他们的发票和报价上有不同的编号……不,他们不需要。