【发布时间】:2016-03-03 00:46:22
【问题描述】:
我是 SQL 的新手,我有以下问题:
我正在制作一个将 3 个表存储到数据库中的 android 应用程序。
电影,与我称为 Movie 的自定义类相关联
Trailers,与我称为 Trailer 的自定义类相关联
评论,与我称为 Review 的自定义类相关联
当应用程序触发事件时,我想创建一个 SQL 语句来删除所有未标记为收藏的电影。此外,它必须删除与未标记为收藏的电影相关的所有预告片和评论。 为了将电影标记为收藏,我添加了一个整数列,它可以有 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);
你能帮我弄清楚如何构造删除语句来完成这个吗?
非常感谢。
【问题讨论】: