2009年8月11日 星期二

在 Postgresql 上為已有資料的資料表增加自動編號欄位方法

通常為新資料表加上自動編號欄位沒啥問題,但是如果是一個已存在的資料表,而且裡面還有一堆資料了,這時就會比較麻煩了,如果直接加自動編號欄沒有問題,但是已存在的資料不會有自動編號,這時就需要一些指令來為已存在的資料填上自動編號。

這個例子是 student 資料表,此資料表是已存在的,而且裡面有成千上萬的資料了…

第一步:新增欄位,但是 SET NOT Null 先不要設。
ALTER TABLE student ADD COLUMN id integer;
ALTER TABLE student ALTER COLUMN id SET STORAGE PLAIN;
ALTER TABLE student ALTER COLUMN id SET DEFAULT nextval('student_id_seq'::regclass);

第二步:為已存在的資料填上自動編號。
UPDATE student set id=nextval('student_id_seq'::regclass);

第三步:執行下列 SET NOT Null 的指令:
ALTER TABLE student ALTER COLUMN id SET NOT NULL;

基本上就是:
1.建立 student_id_seq Sequence,指令我就不寫了,Google 就查的到。
2.新增準備當自動編號的欄位,預設值當然就是剛剛建立的 Sequence。
3.更新自動編號欄,使已存在的資料填上「自動編號」。
4.將自動編號欄設成 Not Null(這一步是選擇性的)。

2009年8月1日 星期六

在 Mac 上安裝實體 Windows 系統的感覺...

我目前雖然是 Mac 的使用者,但其實我並沒有很全心使用 Mac,因為我的工作也大部是在 Windows 上,雖然使用了 MacBook,還是常常需要 Windows,所以也不得以要安裝個 Windows。我原本使用 Mac 上的 VMWare 來裝 Windows ,但是總覺得效能不好…不過這其實是心裡作用,因為其實效能不錯。我實際利用 Mac上的「Boot Camp 輔助程式」安裝了一個實體的 Windows XP,運作的結果,只有在「圖形」效能上有很大的差別,其他的部份,我覺得都還沒啥差別。

至於 Boot Camp 的使用方式,我因為還不會從 Mac 上抓圖,所以…下次再說吧。