Oracle 中刪除2個相關聯的表(主外鍵表)

刪除2個相關聯表中的數據(主從表)的幾種方案:

  • 使用觸發器,刪除主表數據時,觸發刪除從表中的數據;
  • 使用存儲過程,先刪除從表記錄,再刪除主表中的數據;
  • 直接進行操作,建立一個事務,先刪除從表數據,再刪除主表中的數據;

我寫的存儲過程,及測試語句:

CREATE OR REPLACE PROCEDURE MY_DELETE(ID NUMBER, QTYPE VARCHAR2, FLAG OUT VARCHAR2) IS


BEGIN
  IF QTYPE != 'answer'  THEN
    DELETE Q_ITEMS WHERE QID = ID;
    DELETE QUESTIONS WHERE QID = ID;
  ELSE
    DELETE QUESTIONS WHERE QID = ID;
  END IF;
  FLAG := 'Y';
END;


SELECT * FROM Q_ITEMS
SELECT * FROM QUESTIONS


DECLARE
  VS VARCHAR2(2);
BEGIN
  MY_DELETE(21,'answer', VS);
  DBMS_OUTPUT.PUT_LINE(VS);
END;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章