0
我是相当新的SQL和我有以下问题:SQLite的:删除所有行,除了那些外键具有特定值
我做存储3个表到数据库中的Android应用程序。
电影,有一个自定义的I类称为电影相关
拖车,有一个自定义的I类叫拖车
评论,有一个自定义的I类叫做评论
相关的关联
当应用程序触发事件时,我想要创建一条SQL语句,该语句将删除所有未标记为favori的电影TE。此外,它必须删除与未标记为收藏的电影相关的每个预告片和评论。 为了将电影标记为收藏,我添加了一个可以有3个值的整数列:(0,1,2)。当电影条目的值为2时,它是最喜欢的,因此不能删除。
这是我表的结构:
//SQL statement to create the movies table
final String SQL_CREATE_FAVOURITES_TABLE = "CREATE TABLE " +
MoviesEntry.TABLE_NAME + " (" +
MoviesEntry.COLUMN_MOVIE_ID + " INTEGER PRIMARY KEY," +
MoviesEntry.COLUMN_POSTER_URL + " TEXT NOT NULL," +
MoviesEntry.COLUMN_TITLE + " TEXT NOT NULL," +
MoviesEntry.COLUMN_PLOT + " TEXT NOT NULL," +
MoviesEntry.COLUMN_RATING_AVERAGE + " REAL NOT NULL," +
MoviesEntry.COLUMN_RATING_COUNT + " INTEGER NOT NULL," +
MoviesEntry.COLUMN_RELEASE_DATE + " TEXT NOT NULL, " +
MoviesEntry.COLUMN_MOVIE_TYPE + " INTEGER NOT NULL, " +
"CHECK (" + MoviesEntry.COLUMN_MOVIE_TYPE + " IN (0,1,2))" + ");";
//SQL statement to create the trailers table
final String SQL_CREATE_TRAILERS_TABLE = "CREATE TABLE " +
TrailersEntry.TABLE_NAME + " (" +
TrailersEntry.COLUMN_VIDEO_ID + " TEXT PRIMARY KEY," +
TrailersEntry.COLUMN_YOUTUBE_PATH + " TEXT NOT NULL," +
TrailersEntry.COLUMN_VIDEO_NAME + " TEXT NOT NULL," +
TrailersEntry.COLUMN_MOVIE_ID + " INTEGER NOT NULL, "
//COLUMN_MOVIE_ID is a foreign key to favourites table
+ " FOREIGN KEY (" + TrailersEntry.COLUMN_MOVIE_ID + ") REFERENCES " +
MoviesEntry.TABLE_NAME + " (" + MoviesEntry.COLUMN_MOVIE_ID + "), " +
//Each trailer for a movie has to be unique
" UNIQUE (" + TrailersEntry.COLUMN_VIDEO_ID + ", " +
TrailersEntry.COLUMN_MOVIE_ID + ") ON CONFLICT REPLACE);";
//SQL statement to create the reviews table
final String SQL_CREATE_REVIEWS_TABLE = "CREATE TABLE " +
ReviewsEntry.TABLE_NAME + " (" +
ReviewsEntry.COLUMN_REVIEW_ID + " TEXT PRIMARY KEY," +
ReviewsEntry.COLUMN_AUTHOR + " TEXT NOT NULL," +
ReviewsEntry.COLUMN_CONTENT + " TEXT NOT NULL," +
ReviewsEntry.COLUMN_MOVIE_ID + " INTEGER NOT NULL, " +
//COLUMN_MOVIE_ID is a foreign key to the favourites table
" FOREIGN KEY (" + ReviewsEntry.COLUMN_MOVIE_ID + ") REFERENCES " +
MoviesEntry.TABLE_NAME + " (" + MoviesEntry.COLUMN_MOVIE_ID + "), " +
//Each review for a movie has to be unique
" UNIQUE (" + ReviewsEntry.COLUMN_REVIEW_ID + ", " +
ReviewsEntry.COLUMN_MOVIE_ID + ") ON CONFLICT REPLACE);";
db.execSQL(SQL_CREATE_FAVOURITES_TABLE);
db.execSQL(SQL_CREATE_TRAILERS_TABLE);
db.execSQL(SQL_CREATE_REVIEWS_TABLE);
你能帮助我弄清楚如何构建删除语句,将做到这一点?
非常感谢。
完美,非常感谢你! –