Perché il seguente vincolo di chiave esterna (sebbene eseguito correttamente) non viene applicato da SQLite? Come posso fare per far rispettare la relazione?La chiave esterna non viene applicata
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)
)
Grazie mille per la pronta risposta. Non l'ho mai notato nella documentazione (sembrerà più difficile la prossima volta). Avendo appena tentato di eseguire tale comando, ricevo il seguente errore: "SQLite prepare() non riuscito ERRORE: autorizzazione negata DETTAGLI: non autorizzato ESPRESSIONE: PRAGMA foreign_keys = ON;" Sto assumendo che la versione che stanno utilizzando non la supporti o abbia disabilitato la funzionalità. Posso creare lo stesso risultato finale utilizzando i trigger? In tal caso, chiunque potrebbe fornire qualche esempio di sintassi del trigger per SQLITE? –
@Maxim, credo che i trigger di chiave esterna sqlite richiedano esattamente la stessa funzionalità di base delle normali chiavi esterne (spesso rimosse in build incorporate di sqlite che vogliono essere piccole e veloci più di quanto vogliano offrire "piena potenza ACID relazionale" a notevoli costi di prestazioni e di ingombro). –