zoukankan      html  css  js  c++  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 
    " +     创建触发器的sql代码
    //                    "           before insert on u_001.R_DL
    " + 
    //                    "        for each row
    " + 
    //                    "           begin
    " + 
    //                    "           select u_001.RDLSEQ.nextval into :new.id from dual;
    " + 
    //                    "        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();
            }
        }

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

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

  • 相关阅读:
    Tomcat开启Debug模式
    Tomcat多实例
    django 总结
    Django2.* + Mysql5.7开发环境整合
    网络通讯协议
    Python-警告处理
    爬虫框架-selenium
    Python-标准库(常用模块)
    ORM概念
    面向对象-高级
  • 原文地址:https://www.cnblogs.com/wzqjy/p/7763372.html
Copyright © 2011-2022 走看看