首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL5.5 27需要ID从-200000000开始,每条记录正常递增+1

MySQL5.5 27需要ID从-200000000开始,每条记录正常递增+1
EN

Stack Overflow用户
提问于 2013-04-07 10:35:46
回答 1查看 141关注 0票数 0

我有一个客户,想要一个MSSQL DB移植到MYSQL上。ID都是负整数,我需要创建一些MySQL表,其中负整数从-200000000开始,然后每条新记录像正常一样递增t +1

EN

回答 1

Stack Overflow用户

发布于 2013-04-07 10:45:20

不能对负数使用自动递增字段。在MySQL docs中:

如果用户为列赋值为负值,或者该值大于可以存储在指定整数类型中的最大整数,则不定义自动增量机制的行为。

我建议只将你想要的ID + 200000000存储在MySQL中。但是想必你已经想到了这一点,只想把负数存储为ID,你的客户端必须生成ID,而你必须确保ID的生成是安全的,不会出现并发问题。这里有一个解决方案(免责声明:还没有测试过,对于许多并发用户来说可能不是很有效):

代码语言:javascript
复制
LOCK TABLE MyTable READ; -- Make sure no one else can use the table
SELECT MAX(ID) FROM MyTABLE; -- Find out what the current ID is
INSERT INTO MyTable(ID, OtherColumn) VALUES(-100, "x"); -- Derive the ID from the previous value
UNLOCK TABLES; -- Allow others to use table again

必须对MyTable.ID列进行签名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15858278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档