SQL Noobはこちら。私はGPSトラッカーアプリケーションを設計しており、2つのテーブルを持っています。トラックデスクリプタテーブルと、トラックデータテーブルとを含む。トラック記述子テーブルには主キー(オートインクリメント)があり、トラックデータテーブルには外部キーがあります。私はディスクリプタテーブルから行を削除した後、そのキーより大きいキーはすべて1ずつ減らしたいと思います(autoincrementはこれを行いますか?)。私はまた、削除されたより大きいすべてのキーが減少するデータテーブルで同じことが起こることを望みます。 私はAndroid用に開発しており、この方法で行う方法を知っています:How do I add and subtract numbers in SQLite for android?。しかし、これは非常にリソース集約的なようですが、テーブル作成(トリガー)で同じことをする方法はありますか?ここ は(Javaのために残念!!!)二つのテーブルの宣言です:主キー削除後の外部キーのデクリメントSQLite
// TRACK_DESCRIPTION table create statement
String createTableTrackDescription =
"CREATE TABLE " + Constants.TABLE_TRACK_DESCRIPTION + "("
+ Constants.COL_TRACK_DESC_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ Constants.COL_TRACK_NAME + " TEXT,"
+ Constants.COL_LOCATION + " TEXT)";
// TRACK_DATA table create statement
String createTableTrackData =
"CREATE TABLE " + Constants.TABLE_TRACK_DATA + "("
+ Constants.COL_TRACK_DATA_ID + " INTEGER,"
+ Constants.COL_LATITUDE + " REAL,"
+ Constants.COL_LONGITUDE + " REAL,"
+ Constants.COL_SPEED + " REAL,"
+ Constants.COL_ALTITUDE + " INTEGER,"
+ Constants.COL_TIMESTAMP + " INTEGER,"
+ "FOREIGN KEY(" + Constants.COL_TRACK_DATA_ID + ") REFERENCES "
+ Constants.TABLE_TRACK_DESCRIPTION + "(" + Constants.COL_TRACK_DESC_ID + "))";
自動インクリメントはこれを行いません。はい、そうすることは費用がかかることがあります。それが通常は落胆する理由です。 – Uueerdo
なぜFK idを変更したいのですか?あなたはshouldnt btw –
また、Sqlite!= MySqlite – Uueerdo