是否可以不使用触发器(如果不是,那么工作触发器仍然有用)通过乘法自动递增字段?通过乘法MySQL自动递增字段
E.g.我想字段的值,以增加像这样,如果我把它乘以2:
1 - 2 - 4 - 8 - 16 - 32 - 64 - 128 - 256 - 512 - 1024 - 2048
柜面你想知道这是为了更容易方便位操作
是否可以不使用触发器(如果不是,那么工作触发器仍然有用)通过乘法自动递增字段?通过乘法MySQL自动递增字段
E.g.我想字段的值,以增加像这样,如果我把它乘以2:
1 - 2 - 4 - 8 - 16 - 32 - 64 - 128 - 256 - 512 - 1024 - 2048
柜面你想知道这是为了更容易方便位操作
当你建立了一个表,创建一个自动增量字段,但不要将其设置为主键。为主键创建一个空白字段。现在,只要您运行查询,只需将主键设置为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);
这不行,这会导致(2 - 4 - 6 - 8 - 10)。我意识到我可以得到'max(ID)'并且将时间减去2,但是如果不必要的话不想添加额外的查询,并且宁愿MySQL处理它。这在数据库中也很麻烦,有不必要的列。 – 2012-01-09 15:00:00
我说'^',这意味着力量。所以2^1 = 2。2^2 = 4; 2^3 = 8 – blake305 2012-01-09 15:00:43
我的不好,但仍然不是我正在寻找的东西。 – 2012-01-09 15:01:46
虽然这是一个有点晚了,我只是解决了这个使用TRIGGER
:Increment Table ID Field with Bitwise Counting
希望这有助于那些在这个问题谁绊倒。
为什么你在数据库中需要这个?当你运行查询或应用程序代码时,你不能只使用“普通”递增主键作为2的幂次指数吗? – cdeszaq 2012-01-09 15:05:57