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();
        }
    }

然后执行完以后就会为表创建一个序列和一个自增长的触发器

 

还不是很了解这一部分。以后了解了会继续更新的

转载于:https://www.cnblogs.com/wzqjy/p/7763372.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值