我有一个客户,想要一个MSSQL DB移植到MYSQL上。ID都是负整数,我需要创建一些MySQL表,其中负整数从-200000000开始,然后每条新记录像正常一样递增t +1
发布于 2013-04-07 10:45:20
不能对负数使用自动递增字段。在MySQL docs中:
如果用户为列赋值为负值,或者该值大于可以存储在指定整数类型中的最大整数,则不定义自动增量机制的行为。
我建议只将你想要的ID + 200000000存储在MySQL中。但是想必你已经想到了这一点,只想把负数存储为ID,你的客户端必须生成ID,而你必须确保ID的生成是安全的,不会出现并发问题。这里有一个解决方案(免责声明:还没有测试过,对于许多并发用户来说可能不是很有效):
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列进行签名。
https://stackoverflow.com/questions/15858278
复制相似问题