2012-01-09 56 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