sqlite 外键错误< 表约束>预期错误[重复]

rkttyhzu  于 2022-11-14  发布在  SQLite
关注(0)|答案(1)|浏览(185)

这个问题这里已经有答案了

Foreign keys not working - sqlite3.OperationalError: unknown column "user_id" in foreign key definition(1个应答)
14天前关门了。
我只想用外键创建这些表,但如预期的那样,我得到了错误,得到了‘Quantity’。我已经尝试了其他帖子给出的解决方案,但仍然不起作用。
以下是代码:

public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE user(ID INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, password TEXT, email TEXT, phone TEXT)");
        db.execSQL("CREATE TABLE transactions(TRANSACTIONS_ID INTEGER PRIMARY KEY AUTOINCREMENT, userID INTEGER, FOREIGN KEY (userID) REFERENCES user(ID), quantity TEXT)");
    }
62lalag4

62lalag41#

FOREIGN KEY ....是表级子句,必须跟在所有列级子句之后,因此应该遵循数量列的定义。
因此,要么:-

CREATE TABLE transactions(TRANSACTIONS_ID INTEGER PRIMARY KEY AUTOINCREMENT, userID INTEGER, quantity TEXT, FOREIGN KEY (userID) REFERENCES user(ID))

或者,您可以使用以下命令在列级定义外键:

CREATE TABLE transactions(TRANSACTIONS_ID INTEGER PRIMARY KEY AUTOINCREMENT, userID INTEGER REFERENCES user(ID), quantity TEXT)
  • 正如您在列级看到的,您只需使用REFERENCES表(列)
  • 不能在列级定义复杂/复合外键,只能在表级定义。
  • 请参阅CREATE TABLE并展开(单击显示)各个部分
  • 对于列级,展开COLUMN_DEF和COLUMN_CONSTRAINT和FOREIGN_KEY_子句
  • 对于表级,展开TABLE_CONSTRAINT和FOREIGN_KEY_子句
  • 请注意,两者的外键子句本身是相同的

相关问题