初衷是想根據表中存在的外來鍵資訊得到相應的索引指令碼,後來才擴充套件到獲取相應的主鍵字段,大同小異。
這些系統表都是相類似的,例如user_cons_columns 和user_constraints, user_indexes和user_ind_columns
定義乙個函式,把多列的約束欄位以逗號串起來
create or replace function f_getconstraintcolumn(itablename in varchar2,iconstraintname in varchar2)
return varchar2 is
type cur_type is ref cursor;
mycur cur_type;
v_column1value varchar2(4000);
v_result varchar2(32767);
begin
open mycur for select column_name
from user_cons_columns
where table_name=itablename and constraint_name=iconstraintname
order by position;
loop
fetch mycur into v_column1value;
exit when mycur%notfound;
v_result:=v_result||v_column1value||',';
end loop;
close mycur;
v_result:=substr(v_result,1,length(v_result)-1);
return(v_result);
end ;
--該語句用來得到外來鍵表、外來鍵約束名稱、外來鍵字段和相應的主鍵表、主鍵字段,主鍵約束名稱等等,稍作改動便可以寫出建立相應的約束指令碼和索引指令碼
select
a.table_name foreignkeytablename, a.constraint_name,f_getconstraintcolumn(a.table_name, a.constraint_name) foreignkeycolumnsname,
a.r_constraint_name,b.table_name primarykeytablename,f_getconstraintcolumn(b.table_name, a.r_constraint_name) primarykeycolumnsname
from user_constraints a,user_constraints b
where a.constraint_type='r'
and a.r_constraint_name=b.constraint_name
-- and a.table_name = 't_factoring_inv'
order by a.table_name, a.constraint_name
關於外來鍵約束和對應主鍵資訊的查詢指令碼
初衷是想根據表中存在的外來鍵資訊得到相應的索引指令碼,後來才擴充套件到獲取相應的主鍵字段,大同小異。這些系統表都是相類似的,例如user cons columns 和user constraints,user indexes和user ind columns 定義乙個函式,把多列的約束欄位以逗號串起...
關於外來鍵約束和對應主鍵資訊的查詢指令碼
初衷是想根據表中存在的外來鍵資訊得到相應的索引指令碼,後來才擴充套件到獲取相應的主鍵字段,大同小異。這些系統表都是相類似的,例如user cons columns 和user constraints,user indexes和user ind columns 定義乙個函式,把多列的約束欄位以逗號串起...
SQL 主鍵和外來鍵約束
sql 的主鍵和外來鍵的作用 外來鍵取值規則 空值或參照的主鍵值。1 插入非空值時,如果主鍵表中沒有這個值,則不能插入。2 更新時,不能改為主鍵表中沒有的值。3 刪除主鍵表記錄時,你可以在建外鍵時選定外來鍵記錄一起級聯刪除還是拒絕刪除。4 更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。簡而言之,s...