not - Sintaxis SQLite para crear tabla con clave externa
sqlite primary key (2)
Estoy creando una tabla con referencias de clave externa. Me pregunto acerca de la sintaxis requerida. Mayormente he visto lo siguiente (de http://www.sqlite.org/foreignkeys.html#fk_basics ):
CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER,
FOREIGN KEY(trackartist) REFERENCES artist(artistid)
);
Sin embargo, desde el mismo sitio ( http://www.sqlite.org/foreignkeys.html#fk_actions ) veo esto:
CREATE TABLE artist(
artistid INTEGER PRIMARY KEY,
artistname TEXT
);
CREATE TABLE track(
trackid INTEGER,
trackname TEXT,
trackartist INTEGER REFERENCES artist(artistid) ON UPDATE CASCADE
);
La última sintaxis es un poco más conciso, pero quiero saber si el resultado es de alguna manera diferente (aparte de ON UPDATE CASCADE
, que por supuesto tiene un efecto, solo lo incluí porque copié el código exactamente del sitio al que se hace referencia, y porque no sé que la sintaxis anterior no se aplica solo al hacer tal especificación). Estoy trabajando en Android, en caso de que eso importe.
Esta respuesta podría no estar relacionada con la tuya, pero pensé que debería ser útil para otras personas que trabajan con la base de datos de Android.
IN SQLite Las restricciones de clave externa están deshabilitadas por defecto (para compatibilidad con versiones anteriores). Tienes que habilitarlo explícitamente usando
PRAGMA foreign_keys = 1
después de establecer su conexión con la base de datos. Aquí está el enlace a los documentos oficiales que lo explica con más profundidad. http://sqlite.org/foreignkeys.html Navegue para habilitar la compatibilidad con la clave externa en el enlace de arriba.
Ver los diagramas de sintaxis .
La primera sintaxis es una restricción de tabla , mientras que la segunda es una restricción de columna . En estos ejemplos, se comportan igual.
Necesitará una restricción de tabla para una clave en varias columnas (donde no tiene una sola columna donde pueda adjuntarla).