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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/1186.html
標籤:其它
上一篇:學習正則匹配的一些經驗
下一篇:【達夢公開課】視頻匯總
