Mysql主ID没有自动递增?

标签 mysql sql database

我使用c#和mysql进行项目创建POS程序,该程序可以在PC离线时使用,如果PC在线它将连接到远程数据库服务器。

但是我发现我的订单ID在很多电脑上使用都是这样的问题。

PC1 : 100001 100002 ...
PC2 : 110001 110002 ...

因此,我决定让我的主订单 ID 不自动递增。 问题是我能做到吗? 它看起来像这样

order_ID
100001
120001
100002
110001
110002
100003

如果是这样的,我可以用它来搜索功能吗?或(索引它)

因为它不会相同的号码,我有 2digits 号码用于 PC 客户端。

100001
10 is prefix for PC and 0001 is order number

我在数据库服务器上的完整表将是这样的

id(not use auto increment but Primary key)
100001
130001
100002

在我的离线电脑上会是这样的

10 is PC1
id        prefix     number(this will use auto increment and Primary key)
100001      10        0001
100002      10        0002

13 is PC2
id        prefix     number(this will use auto increment and Primary key)
130001      13        0001

所以当我想搜索订单时,我会“从 id=130001 的订单表中选择”

是吗? 如果是的话,性能是否较低?

谢谢。

最佳答案

您的解决方案很好,但它限制每台 PC 最多 9999 条记录。您的主键不必是自动递增整数。主键的唯一要求是它是唯一的。

但是,假设 InnoDB,如果有大量插入,您仍然可以考虑使用一个代理自动递增整数作为主键,并简单地添加一个带有唯一索引的附加列“ID”。对于 InnoDB,主键是一个聚集索引。按升序插入聚集索引会更快(并且会导致更少的并发问题)。

关于Mysql主ID没有自动递增?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28961495/

相关文章:

java - 有 2 个结果集循环的 Servlet

mysql - 如何在 MySQL 中动态分配 LIMIT?

MYSQL RANK OVER 获取最新排名

mysql - 对表字段的所有金额求和并获取最新的最后一条记录id

mysql - 使用序列值插入行时出现列不允许错误

javascript - JS Node 仅返回数字而不返回正确的值

mysqlslap : [ERROR] mysqlslap: Option 'debug-info' used, 但被禁用

mysql - 选择具有最大列值的行由另一列分组而没有嵌套的 select 语句

android - SQLite(安卓): UPDATE query with ORDER BY

php - 更新多个字段时更新未推送到数据库