Oracle中通过序列实现主键的自增长,方法如下:
--删除序列
DROP SQUENCE 序列名
--创建序列
CREATE SQUENCT 序列名 [INCREMENT BY 步长 START WITH 起始值]
--使用序列
INSERT INTO emp(empno,ename,job) VALUES(序列名.nextval,'张三','总裁');
MySQL中实现自增长的方式如下:
CREATE TABLE emp(
empno INT(4) AUTO_INCREMENT,
ename VARCHAR(10))
- 保证自增长的字段必须是主键
- 自增长的字段的数据类型必须是数字类型
MySQL还可以通过使用工具进行修改
通过JDBC取得自增长的方式如下:
public static boolean insertEmpAutoKey() throws SQLException {
//取得Connection对象
Connection conn = ConnectionUtil.getConnection();
//创建sql语句
String sql = "INSERT INTO emp(ename,job,sal,hiredate,mgr,comm,deptno) "
+ "VALUES('张三','总裁',9000,NOW(),null,2000,10)";
//取得发送sql语句的对象
PreparedStatement pst = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
int row = pst.executeUpdate();
ResultSet rst = pst.getGeneratedKeys();
if (rst.next()) {
System.out.println("自增长的主键是:"+rst.getInt(1));
}
rst.close();
ConnectionUtil.close(conn);
return row > 0;
}
先在取得预编译对象这一部中加入参数Statement.RETURN_GENERATED_KEYS
后通过pst.getGeneratedKeys()
取得ResultSet的结果集
最后判断rst.next()
后通过rst.getInt(1)
获取