7
小弟最近在比對phpbb2 的schema ,分別在PostgreSQL 與MySQL 上面放了一套.....
結果發現一件事情:
在PostgreSQL裡頭,phpBB2 用來做數列(編號?)的方式是先create 一個sequence 再去開欄位,使用nextval來處理,而在MySQL裡頭就直接使用auto_increment來做。
那接下來的地方是問題:
在PostgreSQL裡頭,總共定義了15個SEQUENCE,但是在MySQL裡頭只有發現14個auto_increment ....其中有關user_id的部分PostgreSQL有做SEQUENCE來處理,但是MySQL裡頭是啥都不做.......是在MySQL裡頭不需要自動加值嗎?還是有什麼其他的考量?
小弟才剛剛接觸Database 而已,如果有用語或表達方式不佳的地方,還請不吝指正。
我所使用的是phpBB2 2.0.15,PostgreSQL 是8.0.3,MySQL是4.1.11。附上schema裡頭兩邊關於user_id的處理法。
# --------------------------------------------------------
#
# Table structure for table 'phpbb_users' <--MySQL
#
CREATE TABLE phpbb_users (
user_id mediumint(8) NOT NULL,
user_active tinyint(1) DEFAULT '1',
username varchar(25) NOT NULL,
user_password varchar(32) NOT NULL,
user_session_time int(11) DEFAULT '0' NOT NULL,
user_session_page smallint(5) DEFAULT '0' NOT NULL,
user_lastvisit int(11) DEFAULT '0' NOT NULL,
user_regdate int(11) DEFAULT '0' NOT NULL,
user_level tinyint(4) DEFAULT '0',
user_posts mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
user_timezone decimal(5,2) DEFAULT '0' NOT NULL,
user_style tinyint(4),
user_lang varchar(255),
user_dateformat varchar(14) DEFAULT 'd M Y H:i' NOT NULL,
user_new_privmsg smallint(5) UNSIGNED DEFAULT '0' NOT NULL,
user_unread_privmsg smallint(5) UNSIGNED DEFAULT '0' NOT NULL,
user_last_privmsg int(11) DEFAULT '0' NOT NULL,
user_emailtime int(11),
user_viewemail tinyint(1),
user_attachsig tinyint(1),
user_allowhtml tinyint(1) DEFAULT '1',
user_allowbbcode tinyint(1) DEFAULT '1',
user_allowsmile tinyint(1) DEFAULT '1',
user_allowavatar tinyint(1) DEFAULT '1' NOT NULL,
user_allow_pm tinyint(1) DEFAULT '1' NOT NULL,
user_allow_viewonline tinyint(1) DEFAULT '1' NOT NULL,
user_notify tinyint(1) DEFAULT '1' NOT NULL,
user_notify_pm tinyint(1) DEFAULT '0' NOT NULL,
user_popup_pm tinyint(1) DEFAULT '0' NOT NULL,
user_rank int(11) DEFAULT '0',
user_avatar varchar(100),
user_avatar_type tinyint(4) DEFAULT '0' NOT NULL,
user_email varchar(255),
user_icq varchar(15),
user_website varchar(100),
user_from varchar(100),
user_sig text,
user_sig_bbcode_uid char(10),
user_aim varchar(255),
user_yim varchar(255),
user_msnm varchar(255),
user_occ varchar(100),
user_interests varchar(255),
user_actkey varchar(32),
user_newpasswd varchar(32),
PRIMARY KEY (user_id),
KEY user_session_time (user_session_time)
);
PostgreSQL:
CREATE SEQUENCE phpbb_users_id_seq start 3 increment 1 maxvalue 2147483647 minvalue 1 cache 1;
/* --------------------------------------------------------
Table structure for table phpbb_users
-------------------------------------------------------- */
CREATE TABLE phpbb_users (
user_id int4 DEFAULT nextval('phpbb_users_id_seq'::text) NOT NULL,
user_active int2,
username varchar(25) DEFAULT '' NOT NULL,
user_regdate int4 DEFAULT '0' NOT NULL,
user_password varchar(32) DEFAULT '' NOT NULL,
user_session_time int4 DEFAULT '0' NOT NULL,
user_session_page int2 DEFAULT '0' NOT NULL,
user_lastvisit int4 DEFAULT '0' NOT NULL,
user_email varchar(255),
user_icq varchar(15),
user_website varchar(100),
user_occ varchar(100),
user_from varchar(100),
user_interests varchar(255),
user_sig text,
user_sig_bbcode_uid char(10),
user_style int4,
user_aim varchar(255),
user_yim varchar(255),
user_msnm varchar(255),
user_posts int4 DEFAULT '0' NOT NULL,
user_new_privmsg int2 DEFAULT '0' NOT NULL,
user_unread_privmsg int2 DEFAULT '0' NOT NULL,
user_last_privmsg int4 DEFAULT '0' NOT NULL,
user_emailtime int4,
user_viewemail int2,
user_attachsig int2,
user_allowhtml int2 DEFAULT '1',
user_allowbbcode int2 DEFAULT '1',
user_allowsmile int2 DEFAULT '1',
user_allow_pm int2 DEFAULT '1' NOT NULL,
user_allowavatar int2 DEFAULT '1' NOT NULL,
user_allow_viewonline int2 DEFAULT '1' NOT NULL,
user_rank int4 DEFAULT '0',
user_avatar varchar(100),
user_avatar_type int2 DEFAULT '0' NOT NULL,
user_level int4 DEFAULT '1',
user_lang varchar(255),
user_timezone decimal(5) DEFAULT '0' NOT NULL,
user_dateformat varchar(14) DEFAULT 'd M Y H:m' NOT NULL,
user_notify_pm int2 DEFAULT '0' NOT NULL,
user_popup_pm int2 DEFAULT '0' NOT NULL,
user_notify int2,
user_actkey varchar(32),
user_newpasswd varchar(32),
CONSTRAINT phpbb_users_pkey PRIMARY KEY (user_id)
);
CREATE INDEX user_session_time_phpbb_users_index ON phpbb_users (user_session_time);