¿Por qué la restricción de la clave externa (aunque se ejecuta correctamente) no se aplica por SQLite? ¿Cómo puedo hacer para reforzar la relación?No se aplica la clave externa
CREATE TABLE User (
UserID TEXT Unique NOT NULL PRIMARY KEY,
FirstName TEXT NOT NULL,
LastName TEXT NOT NULL,
Username TEXT NOT NULL,
Password TEXT NOT NULL,
Email TEXT NOT NULL,
SignupDate TEXT NOT NULL
)
CREATE TABLE Category (
CategoryID TEXT Unique NOT NULL PRIMARY KEY,
UserID TEXT,
FOREIGN KEY(UserID) REFERENCES User(UserID)
)
Muchas gracias por la pronta respuesta. Nunca me di cuenta de eso en la documentación (se verá más difícil la próxima vez). Habiendo intentado ejecutar ese comando, recibo el siguiente error: "SQLite prepare() failed. ERROR: authorization denied DETAILS: not authorised EXPRESSION: PRAGMA foreign_keys = ON;" Supongo que la versión que están utilizando no la admite o ha tenido la funcionalidad deshabilitada. ¿Podría crear el mismo resultado final usando desencadenadores? Si es así, ¿podría alguien proporcionar algún ejemplo de sintaxis de activación para SQLITE? –
@Maxim, creo que los desencadenadores de clave externa sqlite requieren exactamente la misma funcionalidad subyacente que las antiguas claves externas (a menudo se eliminan en compilaciones incorporadas de sqlite que quieren ser pequeñas y rápidas más de lo que desean ofrecer "potencia ACID relacional completa" en rendimiento sustancial y costos de huella). –