如何使非主键列自动递增

rma*_*aik 1 java sqlite jdbc

我在 java JDBC 中使用 sqlite,我创建了下表:

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+") );";
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何使第一列“this.NODE_TABLE_PK_COL”在它不是主键时自动递增?

mth*_*ers 5

不幸的是,这是不可能的。Autoincrement 上SQLite 文档在页面底部说:

由于 AUTOINCREMENT 关键字更改了 ROWID 选择算法的行为,因此在 WITHOUT ROWID 表或除 INTEGER PRIMARY KEY 之外的任何表列上都不允许使用 AUTOINCREMENT。任何在 WITHOUT ROWID 表或 INTEGER PRIMARY KEY 列以外的列上使用 AUTOINCREMENT 的尝试都会导致错误。