foreign foranea example clave android sql sqlite foreign-key-relationship create-table

android - foranea - Clave externa SQLite



foreign key sqlite example (4)

Estoy siguiendo las instrucciones de la documentación de SQLite en http://www.sqlite.org/foreignkeys.html pero mi intento de agregar una clave foránea está fallando. Aquí están mis declaraciones de creación:

CREATE TABLE checklist ( _id INTEGER PRIMARY KEY AUTOINCREMENT, checklist_title TEXT, description TEXT, created_on INTEGER, modified_on INTEGER ); CREATE TABLE item ( _id INTEGER PRIMARY KEY AUTOINCREMENT, FOREIGN KEY(checklist_id) REFERENCES checklist(_id), item_text TEXT, item_hint TEXT, item_order INTEGER, created_on INTEGER, modified_on INTEGER );

La primera mesa está bien. El error ocurre en la segunda declaración. He intentado tanto con envolver las dos consultas en una transacción como sin ella. Aquí está el error:

columna desconocida "checklist_id" en la definición de clave externa (código 1):, al compilar: elemento CREATE TABLE (_id INTEGER PRIMARY KEY AUTOINCREMENT, FOREIGN KEY (checklist_id) REFERENCES checklist (_id), item_text TEXT, item_hint TEXT, item_order INTEGER, created_on INTEGER , modified_on INTEGER)


Aún debe crear la columna antes de agregarla como clave externa.

Entonces sería:

CREATE TABLE checklist ( _id INTEGER PRIMARY KEY AUTOINCREMENT, checklist_title TEXT, description TEXT, created_on INTEGER, modified_on INTEGER ); CREATE TABLE item ( _id INTEGER PRIMARY KEY AUTOINCREMENT, checklist_id INTEGER, item_text TEXT, item_hint TEXT, item_order INTEGER, created_on INTEGER, modified_on INTEGER, FOREIGN KEY(checklist_id) REFERENCES checklist(_id) );


Coloque la definición FOREIGN KEY al final de la instrucción SQL


Debe incluir el nombre de la columna antes de envolverlo con FOREIGN KEY ().

CREATE TABLE item ( _id INTEGER PRIMARY KEY AUTOINCREMENT, checklist_id INTEGER, FOREIGN KEY(checklist_id) REFERENCES checklist(_id), item_text TEXT, item_hint TEXT, item_order INTEGER, created_on INTEGER, modified_on INTEGER );


Simplemente te falta la columna checklist_id en tu tabla de artículos . Debe declararlo antes de configurarlo como FOREIGN KEY . Intentó crear FK en una columna no existente y esta es la razón por la que no funciona.

Entonces necesitas agregar esto:

checklist_id INTEGER, FOREIGN KEY(checklist_id) REFERENCES checklist(_id)

ahora debería funcionar