刪除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;