tablas studio multiples llaves llave foreign foraneas foranea example constraint clave agregar android sqlite foreign-keys

studio - SQlite-Android-Sintaxis de clave externa



sqlite constraint (3)

Como no puedo hacer ningún comentario, agrego esta nota además de @jethro answer.

Descubrí que también necesita hacer la línea FOREIGN KEY como la última parte de crear la declaración de la tabla, de lo contrario obtendrá un error de sintaxis al instalar su aplicación. Lo que quiero decir es que no puedes hacer algo como esto:

private static final String TASK_TABLE_CREATE = "create table " + TASK_TABLE + " (" + TASK_ID + " integer primary key autoincrement, " + TASK_TITLE + " text not null, " + TASK_NOTES + " text not null, " + TASK_CAT + " integer," + " FOREIGN KEY ("+TASK_CAT+") REFERENCES "+CAT_TABLE+" ("+CAT_ID+"), " + TASK_DATE_TIME + " text not null);";

Donde coloco el TASK_DATE_TIME después de la línea de la clave externa.

He estado tratando de obtener claves externas trabajando en mi base de datos SQLite de Android. He intentado la siguiente sintaxis, pero me da una fuerza cercana:

private static final String TASK_TABLE_CREATE = "create table " + TASK_TABLE + " (" + TASK_ID + " integer primary key autoincrement, " + TASK_TITLE + " text not null, " + TASK_NOTES + " text not null, " + TASK_DATE_TIME + " text not null, FOREIGN KEY ("+TASK_CAT+") REFERENCES "+CAT_TABLE+" ("+CAT_ID+"));";

¿Alguna idea de lo que podría estar haciendo mal? si necesita ver la otra estructura de tabla, entonces puedo, es solo una estructura muy simple para el segundo con una ID y un nombre.

Editar:

Aquí está el error:

03-13 13: 42: 35.389: ERROR / AndroidRuntime (312): Causado por: android.database.sqlite.SQLiteException: columna desconocida "taskCat" en la definición de clave externa: create table recordaders (_id integer clave primaria autoincrement, task_title texto no nulo, el texto de las notas no es nulo, el texto de la fecha del recordatorio no es nulo, la categoría REFERENCIAS (_id) de FOREIGN KEY (taskCat);


Como puede ver en la descripción del error, su tabla contiene las columnas (_id, tast_title, notes, reminder_date_time) y está tratando de agregar una clave externa desde la columna "taskCat" pero no existe en su tabla.


TASK_CAT debe definir su columna TASK_CAT y luego establecer la clave externa sobre ella.

private static final String TASK_TABLE_CREATE = "create table " + TASK_TABLE + " (" + TASK_ID + " integer primary key autoincrement, " + TASK_TITLE + " text not null, " + TASK_NOTES + " text not null, " + TASK_DATE_TIME + " text not null," + TASK_CAT + " integer," + " FOREIGN KEY ("+TASK_CAT+") REFERENCES "+CAT_TABLE+"("+CAT_ID+"));";

Puede encontrar más información en sqlite foreign keys doc .