sql >> Database >  >> RDS >> Mysql

SQLite in Android:buitenlandse sleutels en verwacht

Uw probleem is dat u column_constraint . heeft verwisseld syntaxis met table_constraint syntaxis (d.w.z. de laatste gecodeerd waar de eerste moet worden gebruikt ).

U kunt het probleem oplossen door

. te gebruiken

db.execSQL("CREATE TABLE " + QUEST_TABLE_NAME + "(id INTEGER primary key autoincrement NOT NULL, name TEXT, description TEXT, expValue INTEGER, category INTEGER NOT NULL REFERENCES categories (id), date TEXT");

Zoals hieronder wordt uitgelegd, evenals de alternatieve syntaxis.

Dat is de syntaxis van de kolombeperking die begint met de REFERENCES .... en maakt deel uit van de kolomdefinitie (d.w.z. de kolomnaam is impliciet), terwijl de syntaxis van table_constraint begint met FORIEGN KEY(column_name) REFERENCES ... en volgt de kolomdefinities

U kunt dus ofwel:-

Column_constraint-syntaxis

  • Als onderdeel van een kolomdefinitie

  • category INTEGER NOT NULL REFERENCES categories (id)

bijv.

CREATE TABLE yourtablename (id INTEGER primary key autoincrement NOT NULL, name TEXT, description TEXT, expValue INTEGER, category INTEGER NOT NULL REFERENCES categories (id), date TEXT)

of

Table_constraint-syntaxis

  • nadat de kolommen zijn gedefinieerd, maar nog steeds binnen de kolomdefinitie, d.w.z. nog steeds tussen de haakjes.

  • FOREIGN KEY (category) REFERENCES categories (id)

bijv.

CREATE TABLE yourtablename (id INTEGER primary key autoincrement NOT NULL, name TEXT, description TEXT, expValue INTEGER, category INTEGER NOT NULL, date TEXT, FOREIGN KEY (category) REFERENCES categories (id));

Mogelijk vindt u column-constraint en table-constraint van gebruik.

datum kan een kolomnaam zijn. Ik zou echter willen voorstellen dat het verstandig is om geen SQLite-sleutelwoord, zoals datum, als kolomnaam te gebruiken.




  1. Oracle E-Business Suite-architectuur in 12.2

  2. MySQL:selecteer gegevens uit een tabel waarvan de datum in de huidige week en de huidige maand valt

  3. MySQL geeft een fluctuerend aantal rijen wanneer ik het schema opvraag?

  4. Java-type voor datum/tijd bij gebruik van Oracle Date met Hibernate