Váš dotaz nedává smysl.
DELETE FROM database_userprofile WHERE user.username = 'some';
^^^^
Kde je user
pocházet z? V dotazu není odkazováno. Je to sloupec database_userprofile
? Pokud ano, nemůžete napsat user.username
(pokud se nejedná o složený typ, v takovém případě byste museli napsat (user).username
říci to analyzátoru; ale pochybuji, že jde o složený typ).
Bezprostřední příčinou je, že user
je rezervované slovo
. Toto jméno nemůžete použít, aniž byste jej uváděli:
DELETE FROM database_userprofile WHERE "user".username = 'some';
... tento dotaz však stále nedává smysl, pouze zobrazí jinou chybu:
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...
Můj divoký odhad je, že se pokoušíte o smazání přes spojení. Předpokládám, že máte tabulky jako:
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
);
a pokoušíte se o odstranění pomocí podmínky napříč druhou tabulkou.
Pokud ano, nemůžete stačí napsat user.username
. Musíte použít:
DELETE FROM database_userprofile
USING "user"
WHERE database_userprofile.user_id = "user".id
AND "user".username = 'fred';
Všimnete si, že jsem uvedl dvakrát uvozovky „uživatel“. Je to proto, že se jedná o klíčové slovo a nemělo by se ve skutečnosti používat pro názvy tabulek nebo jiné uživatelem definované identifikátory. Dvojité uvozování nutí, aby byl interpretován jako identifikátor, nikoli klíčové slovo.