La tua domanda non ha alcun senso.
DELETE FROM database_userprofile WHERE user.username = 'some';
^^^^
Dove si trova user
vieni da? Non è referenziato nella query. È una colonna di database_userprofile
? In tal caso, non puoi scrivere user.username
(a meno che non sia un tipo composito, nel qual caso dovresti scrivere (user).username
dire al parser che; ma dubito che sia un tipo composito).
La causa immediata è che user
è una parola riservata
. Non puoi usare quel nome senza citarlo:
DELETE FROM database_userprofile WHERE "user".username = 'some';
... tuttavia, questa query non ha ancora senso, darà solo un errore diverso:
regress=> DELETE FROM database_userprofile WHERE "user".username = 'some';
ERROR: missing FROM-clause entry for table "user"
LINE 1: DELETE FROM database_userprofile WHERE "user".username = 'so...
La mia ipotesi folle è che stai cercando di eseguire un'eliminazione su un join. Presumo che tu abbia tabelle come:
CREATE TABLE "user" (
id serial primary key,
username text not null,
-- blah blah
);
CREATE TABLE database_userprofile (
user_id integer references "user"(id),
-- blah blah
);
e stai cercando di eseguire l'eliminazione con una condizione nell'altra tabella.
Se è così, non puoi scrivi semplicemente user.username
. Devi usare:
DELETE FROM database_userprofile
USING "user"
WHERE database_userprofile.user_id = "user".id
AND "user".username = 'fred';
Noterai che ho doppiato "utente" tra virgolette. Questo perché è una parola chiave e non dovrebbe essere utilizzata per nomi di tabelle o altri identificatori definiti dall'utente. La doppia virgoletta costringe a interpretarlo come un identificatore e non come una parola chiave.