mysql唯一鍵需要注意的坑

2022-09-21 22:12:11 字數 465 閱讀 7499

需求:需要用mallid、keyword、batchid三個欄位來組成唯一鍵,防止三個引數完全相同的資料插入資料庫;但是有一種情況,keyword和batchid欄位不會同時存在,總有乙個欄位為空。

錯誤建表語句如下:

) engine=innodb auto_increment=344 default charset=utf8 comment='遮蔽券資訊';

經測試,效果達不到目的,原因如下:

這種情況下必須保持三個欄位都存在,不能有任何乙個欄位空著,如果batchid這個欄位為空,那麼就會存在相同的mallid、keyword資料存在,導致重複資料的產生。

正確建表語句如下:

unique key `unique2` (`mallid`,`batchid`)

) engine=innodb auto_increment=344 default charset=utf8 comment='遮蔽券資訊';

Mysql 唯一鍵約束

3 唯一鍵約束也是分為兩種 4 刪除唯一鍵約束 乙個表中可以有多個唯一鍵約束 唯一鍵約束意味著,唯一,可以為null 唯一鍵的約束名可以自己指定,也可以預設 建立唯一鍵約束,也會在對應列上建立索引。而且刪除唯一鍵約束的方式是通過刪除對應索引來實現的。create table 資料庫名.表名 欄位名1...

mysql 唯一鍵 MySQL資料庫8(十)唯一鍵

唯一鍵 唯一鍵 unique key,用來保證對應的字段中的資料唯一的。主鍵也可以用保證字段資料唯一性,但是一張表只有乙個主鍵。唯一鍵特點 1 唯一鍵在一張表中可以有多個。2 唯一鍵允許字段資料為null,null可以有多個 null不參與比較 建立唯一鍵 建立唯一鍵和建立主鍵非常類似 1 直接在表...

資料庫 加索引唯一鍵 跟唯一鍵的差別

唯一鍵鍵約束和唯一索引功能是一樣的 唯一性 索引 唯一鍵鍵約束 只是作為一種獨特的約束 如主鍵約束,唯一鍵約束,check約束,外來鍵約束 的一種 以約束的形式管理.但是同時又自動建立了唯一非聚集索引,也就有了索引的效能和部分功能.實際上唯一鍵約束是用唯一索引來約束的。唯一索引 就是一種索引,它對某...