2012年8月31日 星期五

解決學務系統學號重覆問題:修改資料表主鍵值

前天,我們註冊組長跟我說了一件慘案。

學務系統當初設計時以年份加上流水號的方式組成學生的學號,要新建一筆學生資料時以民國年份的個位數做為學號的第一位數,然後再加上四位數的流水序號 (目前還沒有學校能夠一個年級就超過 9999 位學生吧?),這樣就可以組成一個學生的學號了。

比方說今年是 101 年,個位數是 1,所以學號會是在 10001 ~ 19999 這個範圍;明年 102 年,個位數是 2,學號就是 20001 ~ 29999。

這樣的想法很簡單明瞭,但麻煩的是,學務系統已經設計十年了,所以包含我們學校在內,許多用學務系統的學校都發生 101 年新生資料覆蓋 91 年學生資料的慘劇。因為 91 年與 101 年的學生學號都是 10001 ~ 19999,結果新的資料就把舊資料給覆蓋掉了。

啊 啊 啊 啊 啊 *抱頭大叫*

舊生資料被覆蓋掉?那很嚴重耶!

還好立人國中湯慧玲組長與教網中心的高手討論後得到解決的方法。請各位先檢查是不是發生了資料覆蓋的情形,如果已經發生慘劇了,就請依照下列步驟修改資料吧!

  1. 將資料回復至舊學年資料。我們學校註冊組是在 8/14 將學務系統升級為 101 學年度,所以我就必須回復至 8/13 日的資料。是的,8/14 ~ 今天的所有更動都必須重做一次。
  2. 修改 stud_base 資料表的主鍵值

如果比較少用 mysql 的話,修改主鍵值的方法如下:

mysql -u root -p
mysql>use sfs3;
mysql>show create table stud_base;
mysql>ALTER TABLE stud_base DROP PRIMARY KEY;
mysql>ALTER TABLE stud_base ADD PRIMARY KEY (`stud_id`, `stud_study_year`);

修改後再請註冊組將學期初該做的設定重新設定一次吧!可憐的註冊組長!!

Technorati :