2012-01-09 55 views
1

是否可以不使用触发器(如果不是,那么工作触发器仍然有用)通过乘法自动递增字段?通过乘法MySQL自动递增字段

E.g.我想字段的值,以增加像这样,如果我把它乘以2:

1 - 2 - 4 - 8 - 16 - 32 - 64 - 128 - 256 - 512 - 1024 - 2048 

柜面你想知道这是为了更容易方便位操作

+2

为什么你在数据库中需要这个?当你运行查询或应用程序代码时,你不能只使用“普通”递增主键作为2的幂次指数吗? – cdeszaq 2012-01-09 15:05:57

回答

0

当你建立了一个表,创建一个自动增量字段,但不要将其设置为主键。为主键创建一个空白字段。现在,只要您运行查询,只需将主键设置为2^(auto-increment field value)的值即可。

编辑:field1是主键,field2是自动增量,field3是数据。

INSERT INTO table (field3) VALUES ("data"); 
SELECT LAST_INSERT_ID(); 
UPDATE table SET field1 = POW(LAST_INSERT_ID(),2); 
+0

这不行,这会导致(2 - 4 - 6 - 8 - 10)。我意识到我可以得到'max(ID)'并且将时间减去2,但是如果不必要的话不想添加额外的查询,并且宁愿MySQL处理它。这在数据库中也很麻烦,有不必要的列。 – 2012-01-09 15:00:00

+1

我说'^',这意味着力量。所以2^1 = 2。2^2 = 4; 2^3 = 8 – blake305 2012-01-09 15:00:43

+0

我的不好,但仍然不是我正在寻找的东西。 – 2012-01-09 15:01:46