是否可以不使用觸發器(如果不是,那麼工作觸發器仍然有用)通過乘法自動遞增字段?通過乘法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