有重複資料的表新增主鍵或唯一約束

2021-06-26 17:00:30 字數 670 閱讀 5757

待完善

約束分為幾種狀態validate/novalidate,enable/disable,可以通過alter table .. modify constraint ....enable/disable  validate/novalidate修改

同時約束也分為2種模式,deferred/immediate,這裡不做討論.因為模式是不能修改的,在建立時指定的.

validate 是指確認表中的資料滿足約束條件,

novalidate是指允許表中存在的資料可以不滿足約束條件

無論是validate/novalidate,以後插入的資料都要滿足約束,與此無關

enable是指資料要滿足約束條件

disable是指不需要滿足約束條件

對於表中有重複資料,建立主鍵或者說建立唯一索引,或主鍵一般會違反唯一約束。

新增唯一約束的方法:

alter table t1 add constraint uk_t1 unique(id) novalidate;

然後新增主鍵的方法索引:

create index idx_t1 on t1(id);

alter table t1 add constraint pk_t1 primary key (id) novalidate;

(新增主鍵前要先建立乙個普通btree索引,不然會報錯)

Mysql 給有重覆記錄的表新增唯一索引

不希望資料表中有重覆記錄的時候我們可以給表新增乙個聯合唯一索引 例如,user表中有user id,user name兩個字段,如果不希望有兩條一摸一樣的的user id和user name,我們可以給user表新增兩個欄位的聯合唯一索引 alter table user add unique in...

列出沒有主鍵或唯一索引的表

以下指令碼可以用於列出資料庫中沒有主鍵的表,已排除了系統schema select owner,table name from dba tables where 1 1 and owner not in sys system sysman exfsys wmsys olapsys outln dbs...

mysql 中為表的字段新增唯一性約

你用那個圖形介面的軟體,來加就可以了,應該在索引那一欄裡面,自己寫語句修改表,弄不好會出錯的,還麻煩。1.建表時加上唯一性約束 create table t user id int 11 not null auto increment,username varchar 18 not null uni...