Oracle Constraint_type,约束类型

本文详细介绍了TypeCode及其对应的各种类型描述,包括作用级别、检查选项、主键、外键及唯一键等概念,并对这些概念进行了深入浅出的解析。
Type Code Type Description Acts On Level
C Check on a table Column
O Read Only on a view Object
P Primary Key Object
R Referential AKA Foreign Key Column
U Unique Key Column
V Check Option on a view Object
CREATE OR REPLACE PROCEDURE PRO_CREATE_CONSTRAINT ( iv_constraint_name in varchar2, iv_table_name in varchar2, iv_columns_name in varchar2, iv_sql_create_constraint in varchar2 )authid current_user as vi_cnt1 number(10) :=0; vi_cnt2 number(10) :=0; vi_new_count number(10) :=0; vi_old_count number(10) :=0; vv_cons_name varchar2(100) :=''; vv_cons_cols varchar2(100) :=''; begin SELECT COUNT(1) INTO vi_cnt1 FROM MY_CONSTRAINTS t WHERE t.CONSTRAINT_NAME = upper(iv_constraint_name) AND t.TABLE_NAME = upper(iv_table_name) AND t.CONS_COLS = upper(iv_columns_name); if vi_cnt1 = 0 then SELECT COUNT(1) INTO vi_cnt2 FROM MY_CONSTRAINTS t WHERE t.TABLE_NAME = upper(iv_table_name) AND t.CONSTRAINT_TYPE = 'P'; if vi_cnt2 > 0 then SELECT CONSTRAINT_NAME,CONS_COLS INTO vv_cons_name,vv_cons_cols FROM MY_CONSTRAINTS t WHERE t.TABLE_NAME = upper(iv_table_name) AND t.CONSTRAINT_TYPE = 'P'; if iv_columns_name = vv_cons_cols AND iv_constraint_name != vv_cons_name then EXECUTE IMMEDIATE 'ALTER TABLE ' || iv_table_name || ' RENAME CONSTRAINT ' || vv_cons_name || ' to ' || iv_constraint_name; SELECT COUNT(1) INTO vi_new_count FROM my_indexes t WHERE t.index_name = upper(iv_constraint_name); SELECT COUNT(1) INTO vi_old_count FROM my_indexes t WHERE t.index_name = upper(vv_cons_name); if vi_old_count >0 AND vi_new_count=0 then EXECUTE IMMEDIATE 'ALTER INDEX ' || vv_cons_name || ' RENAME TO ' || iv_constraint_name; end if; elsif iv_columns_name != vv_cons_cols then EXECUTE IMMEDIATE 'ALTER TABLE ' || iv_table_name || ' DROP CONSTRAINT IF EXISTS ' || vv_cons_name; EXECUTE IMMEDIATE 'DROP INDEX IF EXISTS ' || vv_cons_name; EXECUTE IMMEDIATE iv_sql_create_constraint; end if; else EXECUTE IMMEDIATE iv_sql_create_constraint; end if; end if; end; / EXEC PRO_CREATE_CONSTRAINT('PK_CPS_BULK_TYPE_CONFIG','CPS_BULK_TYPE_CONFIG','TYPE_NAME,APPLY_OBJECT','ALTER TABLE CPS_BULK_TYPE_CONFIG ADD CONSTRAINT IF NOT EXISTS PK_CPS_BULK_TYPE_CONFIG PRIMARY KEY (TYPE_NAME,APPLY_OBJECT) USING INDEX TABLESPACE {{TABLESPACE_INDEX}} '); ALTER TABLE CPS_BULK_TYPE_CONFIG MODIFY APPLY_OBJECT VARCHAR2(2) NOT NULL; DROP PROCEDURE IF EXISTS PRO_CREATE_CONSTRAINT;
最新发布
08-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值