我正在做一个项目,我需要我的 ID 列是 2 ( 1,2,4,8,16..
) 的幂。我知道我们不能抵消auto_increment
但是对于简单的加法/减法my.cnf
。
例子:
id
----
1
2
4
8
16
32
64
128
etc
我的想法之一是使用自动增量功能作为基础,然后创建一个触发器来应用 2 的幂并更新新 ID,但不幸的是,它不起作用:
DELIMITER $$
CREATE TRIGGER testbitcompatid BEFORE INSERT ON Table
FOR EACH ROW
BEGIN
SET NEW.id = pow(NEW.id, 2)
END;
$$
DELIMITER ;
因为BEFORE INSERT
尚未生成AUTO_INCREMENT
id
,AUTO_INCREMENT
将始终返回0
,基本上不会导致列发生任何变化。
我也试过AFTER INSERT
:
DELIMITER $$
CREATE TRIGGER testbitcompatid AFTER INSERT ON Table
FOR EACH ROW
BEGIN
SET Table.id = pow(NEW.id, 2) WHERE id = NEW.id;
END;
$$
DELIMITER ;
但这失败了,因为您无法更改在AFTER INSERT
.
挠头,但我相信其他人有一个很好的方法来实现这一点。