Java 如何使非主键列自动递增

Java 如何使非主键列自动递增,java,sqlite,jdbc,Java,Sqlite,Jdbc,我将sqlite与java JDBC一起使用,并创建了下表: private final String sqlTableNode = "CREATE TABLE "+this.TABLE_NODE+ " ( "+this.NODE_TABLE_ID_COL+" INTEGER, " + this.NODE_TABLE_NODE_ID_COL+" TEXT NOT NULL, " + this.NODE_TABLE_LAT_COL+" TEXT NO

我将sqlite与java JDBC一起使用,并创建了下表:

private final String sqlTableNode = "CREATE TABLE "+this.TABLE_NODE+
        " ( "+this.NODE_TABLE_ID_COL+" INTEGER, " +
        this.NODE_TABLE_NODE_ID_COL+" TEXT NOT NULL, " +
        this.NODE_TABLE_LAT_COL+" TEXT NOT NULL, " +
        this.NODE_TABLE_LNG_COL+" TEXT NOT NULL, " +
        "PRIMARY KEY ("+this.NODE_TABLE_LAT_COL+", "+this.NODE_TABLE_LNG_COL+") );";

我的问题是,如何使第一列“this.NODE\u TABLE\u PK\u COL”在不是主键时自动递增???

如图所示,自动递增仅适用于主键。

如图所示,自动递增仅适用于主键。

不幸的是,这是不可能的。页面底部显示:

由于AUTOINCREMENT关键字会更改ROWID选择算法的行为,因此不允许在没有ROWID的表或除INTEGER主键以外的任何表列上使用AUTOINCREMENT。任何试图在没有ROWID的表上或在整型主键列以外的列上使用AUTOINCREMENT的操作都会导致错误


不幸的是,这是不可能的。页面底部显示:

由于AUTOINCREMENT关键字会更改ROWID选择算法的行为,因此不允许在没有ROWID的表或除INTEGER主键以外的任何表列上使用AUTOINCREMENT。任何试图在没有ROWID的表上或在整型主键列以外的列上使用AUTOINCREMENT的操作都会导致错误

@拉梅克: 不,你不能。您可以在此处找到文档:

它明确指出:

不允许在没有ROWID的表或除INTEGER主键以外的任何表列上自动递增。任何试图在没有ROWID的表上或在整型主键列以外的列上使用AUTOINCREMENT的操作都会导致错误

如果我理解您的需求,那么在这个场景中您可以做的是,在

此.NODE\u表\u ID\u列

因为它是整数,所以它符合主键的条件

并在以下位置创建唯一密钥:

唯一键(“+this.NODE\u TABLE\u ID\u COL+”、“+this.NODE\u TABLE\u LAT\u COL+”、“+this.NODE\u TABLE\u LNG\u COL+”)

@拉梅克: 不,你不能。您可以在此处找到文档:

它明确指出:

不允许在没有ROWID的表或除INTEGER主键以外的任何表列上自动递增。任何试图在没有ROWID的表上或在整型主键列以外的列上使用AUTOINCREMENT的操作都会导致错误

如果我理解您的需求,那么在这个场景中您可以做的是,在

此.NODE\u表\u ID\u列

因为它是整数,所以它符合主键的条件

并在以下位置创建唯一密钥:

唯一键(“+this.NODE\u TABLE\u ID\u COL+”、“+this.NODE\u TABLE\u LAT\u COL+”、“+this.NODE\u TABLE\u LNG\u COL+”)

该栏目名称中的“主键”是什么意思?该栏目名称中的“主键”是什么意思?