我在 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”在它不是主键时自动递增?
不幸的是,这是不可能的。Autoincrement 上的SQLite 文档在页面底部说:
由于 AUTOINCREMENT 关键字更改了 ROWID 选择算法的行为,因此在 WITHOUT ROWID 表或除 INTEGER PRIMARY KEY 之外的任何表列上都不允许使用 AUTOINCREMENT。任何在 WITHOUT ROWID 表或 INTEGER PRIMARY KEY 列以外的列上使用 AUTOINCREMENT 的尝试都会导致错误。