具有自动递增功能的java主键
我有一个问题与自动增量,同一时间的数字改变,而不是保持增量,因为我定义。 附上表格的代码和图片
// Table 3 creation (Coupon)
try {
java.sql.Statement stmt3 = conn.createStatement();
sql = "create table Coupon("
+ "ID bigint not null primary key generated always as identity(start with 1, increment by 1), "
+ "TITLE varchar(30) not null, "
+ "START_DATE DATE not null, "
+ "END_DATE DATE not null,"
+ "AMOUNT INTEGER not null,"
+ "TYPE varchar(10) not null,"
+ "MESSAGE varchar(30) not null,"
+ "PRICE double not null,"
+ "IMAGE varchar(200) not null)";
stmt3.executeUpdate(sql);
System.out.println("success:" + sql);
} catch (SQLException e) {
System.out.println(e.getMessage());
}
# 1 楼答案
你不能用数据库来标记问题。然而,没有数据库保证自动递增/串行/标识列总是只递增“1”
这样的保证有很多开销
相反,保证是当列是唯一的时,下一个值将大于上一个值,并且差值将是增量的倍数
无间隙增量需要大量工作的一些原因:
有很多方法可以解决这个问题,但代价高昂,而且通常是不必要的