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(); } }
然后执行完以后就会为表创建一个序列和一个自增长的触发器
还不是很了解这一部分。以后了解了会继续更新的