CREATE TABLE pre_forum_post ( pid int(10) unsigned NOT NULL COMMENT '帖子id', fid mediumint(8) unsigned NOT NULL default '0' COMMENT '論壇id', tid mediumint(8) unsigned NOT NULL default '0' COMMENT '主題id', `first` tinyint(1) NOT NULL default '0' COMMENT '是否是首貼', author varchar(15) NOT NULL default COMMENT '作者姓名', authorid mediumint(8) unsigned NOT NULL default '0' COMMENT '作者id', `subject` varchar(80) NOT NULL default COMMENT '標題', dateline int(10) unsigned NOT NULL default '0' COMMENT '發表時間', message mediumtext NOT NULL COMMENT '消息', useip varchar(15) NOT NULL default COMMENT '發帖者IP', invisible tinyint(1) NOT NULL default '0' COMMENT '是否通過審核', anonymous tinyint(1) NOT NULL default '0' COMMENT '是否匿名', usesig tinyint(1) NOT NULL default '0' COMMENT '是否啟用簽名', htmlon tinyint(1) NOT NULL default '0' COMMENT '是否允許HTML', bbcodeoff tinyint(1) NOT NULL default '0' COMMENT '是否關閉BBCODE', smileyoff tinyint(1) NOT NULL default '0' COMMENT '是否關閉表情', parseurloff tinyint(1) NOT NULL default '0' COMMENT '是否允許粘貼URL', attachment tinyint(1) NOT NULL default '0' COMMENT '附件', rate smallint(6) NOT NULL default '0' COMMENT '評分分數', ratetimes tinyint(3) unsigned NOT NULL default '0' COMMENT '評分次數', `status` int(10) NOT NULL default '0' COMMENT '帖子狀態', tags varchar(255) NOT NULL default '0' COMMENT '新增字段,用於存放tag', `comment` tinyint(1) NOT NULL default '0' COMMENT '是否存在點評', replycredit int(10) NOT NULL default '0' COMMENT '回帖獲得積分記錄', `position` int(8) unsigned NOT NULL auto_increment COMMENT '帖子位置信息', PRIMARY KEY (tid, `position`),//就是這里 KEY fid (fid), KEY authorid (authorid,invisible), KEY dateline (dateline), KEY invisible (invisible), KEY displayorder (tid,invisible,dateline), KEY `first` (tid,`first`), UNIQUE KEY pid (pid) ) ENGINE=MyISAM COMMENT='帖子表'; |
unique Key是唯一鍵,而Primary key是主鍵
Primary key 與Unique Key都是唯一性約束。但二者有很大的區別:
1、Primary key的1個或多個列 必須為NOT NULL,如果列為NULL,在增加PRIMARY KEY時,列自動更改為NOT NULL。而UNIQUE KEY 對列沒有此要求。
2、一個表只能有一個PRIMARY KEY,但可以有多個UNIQUE KEY。
Key是索引約束,對表中字段進行約束索引的,都是通過primary foreign unique等創建的。常見有foreign key,外鍵關聯用的。