MySQL設置多列為唯一約束,即多列不能同時相同

假設有一個需求是用戶給評論點贊,數據庫設計是三張表,用戶表t_user,評論表t_comment,點贊表t_praise,其中點贊表中有兩個外鍵分別是user_id和comment_id,分別關聯用戶表的用戶id和評論表的評論id,然后規定一個用戶只能給同一條評論點贊一次,有一種實現方式就是在插入點贊表之前,先通過user_id和comment_id查詢是否有點贊記錄,如果沒有的話,再執行插入操作,否則返回您已經點過贊了.這樣實現的話就會多一次數據庫查詢操作.更好的實現是,修改點贊表的user_id和comment_id為唯一約束,即這兩列不能同時相同,這樣在執行插入操作的話,如果已經點過贊了,數據庫會拋出違反了唯一鍵約束,這樣的話,就可以避免多一次數據庫查詢操作了.具體設置多列為唯一約束的語句是(注意斜體語句):

CREATE TABLE t_praise (
id int(12) unsigned NOT NULL AUTO_INCREMENT,
comment_id int(12) NOT NULL,
user_id int(12) NOT NULL,
KEY FK_t_praise_comment (comment_id),
KEY FK_t_praise_user (user_id),
UNIQUE KEY UK_praise (comment_id,user_id)
)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容