採用過程實現資料庫約束完整性

2021-08-29 14:43:43 字數 2114 閱讀 2933

約束的完整性,是資料庫所具有的一大特性,但在最近的乙個資料庫轉換專案中,確要通過程式的方式,人為的去實現.有些不太明白設計者的想法.需求是這樣的,若省市表中的記錄被別的表引用,則不能進行刪除操作(表之間未建立任何約束).無奈之舉,最後決定用存貯過程的方式去實現,效率會高一些,減少開發量,也有利於日後的維護.

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 提供定義完整...