Why does referencing a SQLite rowid cause foreign key mismatch?

谁说我不能喝 提交于 2019-12-01 15:23:48

SQLite documentation is quite clear on foreign keys:

The parent key must be a named column or columns in the parent table, not the rowid.

(See here.)

You can't use rowid for this, so just define your own auto incrementing primary key for the table.

You can not use rowid if not defined in your table, but if you define it as follows:

CREATE TABLE IF NOT EXISTS Clase(
ROWID INTEGER NOT NULL,
nombre  VARCHAR(50) NOT NULL,
PRIMARY KEY(ROWID));

The ROWID column can be used to make foreign references, and when you insert a record into the table, the ROWID column behaves like an autoincrement field, it is why that sqlite recommended don't have autoincrement fields.

Note: The ROWID column can be called otherwise only it has to be of type INTEGER and primary key of the table.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!