首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JDBC 調用存儲過程實戰(三):刪除數據存儲過程與外鍵級聯驗證

     編輯:Java 相關知識

本篇演示刪除操作的存儲過程創建,包含表結構定義、外鍵級聯刪除設置,以及 Java 調用刪除後驗證數據移除。

數據庫表結構與存儲過程

-- 創建主表
drop table 學生基本信息表;
create table 學生基本信息表 (
    StuID int primary key,
    StuName varchar(10),
    StuAddress varchar(20)
);
insert into 學生基本信息表 values(1, '三毛', 'wuhan');
insert into 學生基本信息表 values(2, '三毛', 'wuhan');

-- 創建從表,外鍵級聯刪除/更新
create table 學生成績表 (
    StuID int,
    Chinese int,
    PyhSics int,
    foreign key(StuID) references 學生基本信息表(StuID)
        on delete cascade
        on update cascade
);
insert into 學生成績表 values(1, 99, 100);
insert into 學生成績表 values(2, 99, 100);

-- 刪除存儲過程
create procedure delePro
    @StuID int
as
    delete from 學生基本信息表 where StuID = @StuID;

-- 查詢存儲過程(驗證用)
create procedure selePro
as
    select * from 學生基本信息表;

Java 調用代碼

import java.sql.*;

public class ProcedureTest {
    public static void main(String args[]) throws Exception {
        DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
        Connection conn = DriverManager.getConnection("jdbc:odbc:mydata", "sa", "");

        // 1. 調用刪除存儲過程,刪除 StuID=1
        CallableStatement c = conn.prepareCall("{call delePro(?)}");
        c.setInt(1, 1);
        c.execute();

        // 2. 驗證:調用查詢過程
        c = conn.prepareCall("{call selePro}");
        ResultSet rs = c.executeQuery();

        while (rs.next()) {
            String stu = rs.getString("StuID");
            String name = rs.getString("StuName");
            String add = rs.getString("StuAddress");
            System.out.println("學號: " + stu + " 姓名: " + name + " 地址: " + add);
        }

        c.close();
        conn.close();
    }
}

核心知識點

  • 外鍵級聯:on delete cascade 確保刪除主表記錄時,從表關聯記錄自動刪除,維護引用完整性。
  • 刪除驗證:執行 delePro 後,查詢 selePro 僅剩 StuID=2 的記錄,證明級聯生效。
  • 參數綁定:單一 int 參數,setInt(1, 1) 設置。

擴展:軟刪除 vs 硬刪除

生產系統常採用軟刪除(增加 is_deleted 標記位或 deleted_at 時間戳),而非物理刪除,優勢:

  1. 數據可恢復、可審計
  2. 避免外鍵級聯導致的大量連鎖刪除性能問題
  3. 滿足合規要求(如 GDPR 數據保留)

若必須硬刪除,請確保具備完整備份與回滾方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved