1、非空約束條件可以在建表時建立,也可以在建表後建立。如下圖。2、在數據字典中查詢剛剛建立的非空約束條件。3、唯壹約束條件用於保證字段或者字段的組合不出現重復值。4、同樣唯壹約束條件可以在建表時建立,也可以在建表後建立。5、最後在數據字典中查詢唯壹約束條件。唯壹約束的字段在插入數據時不能出現重復,可以為空,但是空也只能出現壹次。比如說學生的學號設有唯壹約束,那麽就不能出現兩個學號相同的學生,如果插入數據時出現有兩條以上學生信息的學號相同,就會出現妳說的這個問題。數據庫表的主鍵就帶有唯壹約束,所以主鍵是不能重復的。 反唯壹約束條件?應該是主鍵重復吧。
解決的方法兩種方法:壹是處理掉重復的數據,二是修改約束條件
如果是oracle的import命令,可以設定參數,采用忽略錯誤導入的方式導入,或者無條件覆蓋原數據。
把以前的數據清空再導入。1.oracle 官網給出建議:
如果約束設置enable,則會檢查新插入或更新的數據是否符合約束條件。
如果約束設置disable,則表中可以包含,違反約束的記錄。
擴展資料
如果約束設置validate,則表中存在的數據,必須符合約束。
如果約束設置novalidate,則表中存在的數據,不必符合約束。
validate和novalidate的行為,依賴於是否設置了enabled/disabled。 因此創建約束的時候,可以選擇組合方式來達到目的。
2.針對表中已存在重復數據且要增加唯壹約束的情況:
a.直接創建唯壹約束,仍報錯,是因為數據庫會根據唯壹約束創建唯壹索引,因此報錯;
alter table table_name add constraint constraint_name unique(colunum) enable novalidate;
b.此時應該先創建普通索引,然後在此基礎上創建唯壹約束:
create index idx_name on table_name(colunum);
alter table table_name add constraint constraint_name unique(colunum) enable novalidate;
同理:也可以根據此方法創建唯壹主鍵
create index idx_name on table_name(colunum);
alter table tablename add constraint pk_tablename primary key (column1,column2,...) enable novalidate;