代码之家  ›  专栏  ›  技术社区  ›  Konrad Morawski

带或不带外键的REFERENCES之间有什么区别

  •  8
  • Konrad Morawski  · 技术社区  · 10 年前

    关于 SQLite ,带或不带外键的REFERENCES之间有什么区别?

    这两者有什么区别

    CREATE TABLE players_set ( 
        _id            INTEGER PRIMARY KEY AUTOINCREMENT
                               NOT NULL,
        player_id      INTEGER REFERENCES players ( _id ) ON DELETE CASCADE,
        players_set_id INTEGER REFERENCES players_set_names ( _id ) 
    );
    

    并且:

    CREATE TABLE players_set ( 
        _id            INTEGER PRIMARY KEY AUTOINCREMENT
                               NOT NULL,
        player_id INTEGER,
        players_set_id INTEGER REFERENCES players_set_names ( _id ),
        FOREIGN KEY (player_id) REFERENCES players ( _id ) ON DELETE CASCADE        
    );
    

    我发现了另一个问题: Difference between using REFERENCES with and without FOREIGN KEY?

    我读到了 the documentation ,但我没有说清楚。

    准确地说,我正在使用SQLite Android (因此是标签)。我不知道这是否会有什么不同,但如果它有自己的怪癖,我会很有用地了解一下。

    1 回复  |  直到 7 年前
        1
  •  7
  •   Mureinik    10 年前

    这个 FOREIGN KEY 语法比在列定义中内联定义它更灵活(例如,它允许您定义复合外键,其中引用列中应该存在两个或多个字段的组合)。

    在您的案例中,两个DDL语句之间没有区别。可以说,外键的内联定义无非是语法修饰。