約束的完整性,是資料庫所具有的一大特性,但在最近的乙個資料庫轉換專案中,確要通過程式的方式,人為的去實現.有些不太明白設計者的想法.需求是這樣的,若省市表中的記錄被別的表引用,則不能進行刪除操作(表之間未建立任何約束).無奈之舉,最後決定用存貯過程的方式去實現,效率會高一些,減少開發量,也有利於日後的維護.
create or replace procedure p_iscityused(
citycode varchar,
ret_code out int /*100--存在;99--不存在*/
) astotal number;
begin
begin --成員單位表--
select count(t.cmp_id) into total from bs_company t where t.city = citycode ;
if total > 0 then
ret_code:= 100 ;
return ;
end if;
end;
begin --往來客戶資訊表--
select count(t.customer_id) into total from bs_customer t where t.city = citycode ;
if total > 0 then
ret_code:= 100 ;
return ;
end if;
end;
begin --分支機構資訊表--
select count(t.organ_id) into total from pm_organ t where t.city_id = citycode ;
if total > 0 then
ret_code:= 100 ;
return ;
end if;
end;
begin --業務申請單--
select count(t.bill_id) into total from bk_billrequest t where t.payee_city = citycode ;
if total > 0 then
ret_code:= 100 ;
return ;
end if;
end;
begin --銀行賬號表--
select count(t.bankacc_id) into total from ac_bankaccount t where t.bank_city = citycode ;
if total > 0 then
ret_code:= 100 ;
return ;
end if;
end;
if total = 0 then
ret_code:= 99 ;
return ;
end if;
exception
when others then
ret_code:= 101 ; --執行失敗--
end ;
測試存貯過程:
方式一(按位置傳遞):
sql>variable a1 number;
sql>exec p_iscityused('0123',:a1);
方式二(按名稱傳遞):
sql>declare
sql>citycode varchar2(100);
sql>ret_code number ;
sql>begin
sql>p_iscityused(citycode => citycode ,ret_code => ret_code);
sql>end ;
目前這種方式只能將返回值通過控制台輸出:
--set serveroutput on ;
--dbms_output.put_line('共有記錄'||total||'條!'||',返回值為:'||ret_code);
方式三:在pl/sql dev 中, 通過"測試"選項來做(推薦).
資料庫 完整性約束
問題描述 現有乙個商店的資料庫 shopping 記錄客戶及其購物情況,由以下四個關係組成 a 客戶表customer 儲存客戶資訊,包括客戶號customerid 客戶姓名cname 位址address 電子郵件email 性別gender 身份證號cardid 號碼telcode。b 商品表go...
資料庫 資料完整性約束
資料完整性 儲存在資料庫中的所有資料值均正確的狀態。完整性約束 防止不符合規範的資料進入資料庫,在使用者對資料進行插入 修改 刪除等操作時,dbms自動按照一定的約束條件對資料進行監測,使不符合規範的資料不能進入資料庫,以確保資料庫中儲存的資料正確 有效 相容。1.實體完整性 實體完整性是對主鍵的約...
資料庫概論 完整性約束
一 資料庫的完整性約束 資料的正確性和相容性 注 資料的完整性和安全性是兩個不同的概念。資料庫的完整性是為了防止資料庫中含有不符合語義的的資料,也就是防止資料庫中含有不正確的資料。資料庫中的安全性是為了保護資料庫防止惡意的破壞和非法的訪問。二 為維護資料庫的完整性,dbmx必須能夠 1 提供定義完整...