2011-05-19 78 views
1

我在我的數據庫中有一個表,用於存儲用戶操作的記錄。目前包含用戶ID的列被設置爲int(11),但是我正在對我的代碼進行一些更改,我將添加臨時用戶ID。MySQl字段類型

爲了區分臨時ID和普通ID,我在ID前面加了0。

例如:4-常規用戶; 023 - 臨時

然而,當我將這個ID填充到ym表中時,零被丟棄。我需要將哪些字段類型更改爲保持所有ID的機制?

回答

0

用戶ID是一個i​​nt,int是二進制數。前導零是與沒有前導零的數字相同。

我會建議否定數字來表示臨時ID。

1

我想你必須去一個varchar字段,但請注意,這將消除你的auto_increment,如果你有。

0

你不能在int((01 == 1))之前加一個0 - 大多數情況下,但我不打算進入這種變幻莫測的狀況)。

只需添加一個類型列。您以後可以隨時刪除該列。

+0

它並不一定是int ... – santa 2011-05-19 21:25:51

+0

看看下面我的解決方案。我認爲這就是你真正想要的。 – 2011-05-19 21:28:57

2

你可以將其更改爲VARCHAR,如果你想用一個0

前綴標識的,但你可能想試試這個。 添加新欄:

ALTER TABLE `your_table` ADD COLUMN `temp_id` INT(11) NULL AFTER `original_id`; 

然後遷移你的ID的

UPDATE `your_table` SET temp_id = `original_id`; 
+0

我靠着varchar自己。此列沒有索引,沒有唯一性,也沒有自動增量。純粹將某些行爲與用戶聯繫起來。 – santa 2011-05-19 21:25:20