1

我正在尝试级联删除,以便当我从myFooTable所有关联记录中删除记录时myFooBarLinkTablemyBarTable也会被删除。我当前的数据库模式尝试的简化版本如下。当我从myFooTable关联的记录中删除一条记录时myFooBarTable被删除;但其中的记录myBarTable仍然存在。

public class MyDatabaseManager extends SQLiteOpenHelper {
@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE myFooTable (fooID INTEGER PRIMARY KEY AUTOINCREMENT, " +
                "fooText1 TEXT," +
                "fooText2 TEXT " +    
                ");");

    db.execSQL("CREATE TABLE myBarTable (barID INTEGER PRIMARY KEY AUTOINCREMENT, " +
                "barText1 TEXT, " +
                "barText2 TEXT);" );

    db.execSQL("CREATE TABLE myFooBarLinkTable (fooBarLinkID INTEGER PRIMARY KEY AUTOINCREMENT, " +
                "fooLinkID REFERENCES myFooTable(fooID) ON DELETE CASCADE, " +
                "barLinkID REFERENCES myBarTable(barID) ON DELETE CASCADE);" );
4

1 回答 1

1

ON DELETE CASCADE 只有一种方式工作;表定义中的这些子句仅在被引用myFooBarLinkTable表中的记录被删除时触发,即在或中。myFooTablemyBarTable

如果您希望以另一种方式进行删除,您必须编写自己的触发器,或者DELETE从您的应用程序中执行单独的命令。

于 2013-01-21T16:11:33.413 回答