db2唯一索引與唯一約束,重複刪除唯一約束儲存過程
今天寫可重複執行的指令碼時,發現沒有重複刪除約束的儲存過程,寫此紀錄。
--先建立唯一約束會自動建立唯一索引且兩者名字相同,若該字段上已有索引,再次建立索引的語句無效,此時第二句話無效。
--先建立唯一索引不會建立唯一約束,在執行建立唯一約束,此時兩者名字不同
alter table user_test add constraint cons_id unique(id);
create unique index index_id on user_test(id);
--刪除唯一約束時,會將該約束帶來的索引一併刪除。
--如果先建立的索引,必須先刪除約束才能刪除索引。
alter table user_test drop constraint cons_id;
drop index index_id;
--建立刪除索引儲存過程
--1.變數名稱不可以與表中欄位名稱一樣,若一樣不執行where語句,萬一是delete或者update可就慘嘍。
--2.拼接sql語句時,記得關鍵字前後的空格,不然與表名連線在一起報語法錯誤。
create procedure "wusb"."trydropcons" ( in "tablename" varchar(50) , in "constraintname" varchar(50))
begin
declare ex varchar(500);
declare num int;
select
count(*) into num
from
syscat.keycoluse k
where
k.constname = upper(constraintname) and
k.tabname = upper(tablename);
if num > 0
then set ex = ' alter table ' || tablename || ' drop constraint ' || constraintname;
prepare ext from ex;
execute ext;
end if;
end
唯一約束,主鍵約束,唯一索引
1.unique約束和primary key約束用來保證同一表中指定的列上沒有重複值,這兩個約束都產生唯一索引確保資料一致性,預設情況下,unique約束產生唯一的非聚集索引,primary key約束產生唯一的聚集索引。primary key約束比unique約束嚴格 primary key列不允...
oracle 唯一約束 和 唯一索引
唯一性約束 唯一性約束指表中乙個字段或者多個字段聯合起來能夠唯一標識一條記錄的約束。聯合欄位中,可以包含空值。注 在oracle中,唯一性約束最多可以有32列。唯一性約束可以在建立表時或使用alter table語句建立。唯一性約束和主鍵的區別 主鍵 primary key 所有組成主鍵的列都不能包...
唯一約束和唯一索引區別
1.主鍵約束 primary key 1 主鍵用於唯一地標識表中的每一條記錄,可以定義一列或多列為主鍵。2 是不可能 或很難 更新 3 主鍵列上沒有任何兩行具有相同值 即重複值 不允許空 null 4 主健可作外健,唯一索引不可 2.唯一性約束 unique 1 唯一性約束用來限制不受主鍵約束的列上...