Oracle - java創建Oracle 的觸發器


Oracle - java創建Oracle 的觸發器

 今天看完了觸發器了 在我的 隨筆  中寫到了這個觸發器,大家可以看看,希望能幫上忙

 

今天碰到這個問題,遇到點問題,到這來 總結一下解決的辦法,

需求,為一個用戶當中的表增加一個自動增長列,我還沒有學Oracle 的這部分,只是簡單的記錄以下步驟,不對的請多多指正

 

在Oracle數據庫中新建一個表,自己完成就行

 

下面是分別增加序列的增加觸發器的sql代碼

序列:CREATE SEQUENCE U_001.RDLSEQ INCREMENT BY 1 START WITH 1 MINVALUE 1 CACHE 50
觸發器:create or replace trigger u_001.RDLCF //觸發器:u_001為用戶 . 你創建的觸發器的名字
           before insert on u_001.R_DL   //在那個用戶下面u_001的那個表上創建
        for each row
           begin
           select u_001.RDLSEQ.nextval into :new.id from dual;     //select  后面是 用戶.剛剛創建的序列的 名字.nextval into :new . 這是你需要自增長的列名
        end RDLCF;

下面是java實現創建Oracle 的代碼,綠色注釋的也是可用代碼

@Test
    public void addUserSeq() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
             String url = "jdbc:oracle:" +
                     "thin:@192.168.0.4:1521:orcl";
            // 127.0.0.1是本機地址,XE是精簡版Oracle的默認數據庫名
            String u = "system";// 用戶名,系統默認的賬戶名
            String p = "***";// 你安裝時選設置的密碼
            System.out.println("顯示url:" + url);
            Connection con = DriverManager.getConnection(url, u, p);// 獲取連接
            
            
//            String sql="CREATE SEQUENCE U_001.RDLSEQ INCREMENT BY 1 START WITH 1 MINVALUE 1 CACHE 50";    創建序列
//            System.out.println("執行的sql語句"+sql);
//            java.sql.PreparedStatement ps = con.prepareStatement(sql);
//            ps.executeUpdate();  執行創建序列
//            
//            String sql2=" create or replace trigger u_001.RDLCF \r\n" +     創建觸發器的sql代碼
//                    "           before insert on u_001.R_DL\r\n" + 
//                    "        for each row\r\n" + 
//                    "           begin\r\n" + 
//                    "           select u_001.RDLSEQ.nextval into :new.id from dual;\r\n" + 
//                    "        end RDLCF;";
//            System.out.println("執行的sql語句"+sql2);
            Statement ps2 = con.createStatement();      //在這是不能用 prepareStatement的,會報啥 索引缺少in或out參數,可能是這個的保護措施啥的,用普通的statement就可以
            String ss="insert into U_001.R_DL(sjlx) values ('4')";
            ps2.execute(ss);
        }catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

然后執行完以后就會為表創建一個序列和一個自增長的觸發器

 

還不是很了解這一部分。以后了解了會繼續更新的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM