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