Это может быть скорее вопрос дизайна, но здесь. Я пишу приложение для Android, которое использует локальную базу данных SQLite (с несколькими таблицами), которая теперь синхронизируется с базой данных MySQL. Я хочу обновлять измененные строки в моей базе данных. Для этого я добавляю столбец «last_modified
» в каждую строку, которая указывает время добавления/обновления/замены этой строки/etc.Использование SQLite Trigger для обновления поля «LastModified»
Я новичок в операциях с базой данных, но я видел, что триггер может быть лучшим способом сделать это. У меня есть несколько вопросов, касающихся триггеров, SQLite и Android.
Я прочел эту ссылку: on update current_timestamp with SQLite В основном это говорит о том, что я использую правильный подход. Мои вопросы:
- Куда я могу поместить заявление
db.execSQL("CREATE TRIGGER...")
? До или после создания таблиц? - Могу ли я использовать тот же триггер для каждой таблицы в моей базе данных? т. е. может ли Trigger автоматически определять, какая таблица и строка обновляется/вставлена / заменена/и т. д. и уведомлять, чтобы установить поле «
last_modified
» этой строки, или мне нужно создать отдельный триггер для каждой таблицы? - Поскольку я новичок в операциях с базой данных, вы можете представить пример оператора Android Trigger, который выполняет описанное выше поведение, или предоставить ресурс примеру?
Или если триггеры - плохая идея, есть ли лучшие альтернативы?
спасибо.
Выглядит отлично! Спасибо. Итак, в вашем примере «TIME» - ваше поле «last_modified», а «ID» - это только поле primary_id для каждой строки? – jmhend
Еще один вопрос. Есть ли способ активировать ту же поддержку триггера как для UPDATE, так и для INSERTing? – jmhend
Или вместо того, чтобы иметь триггер для INSERTING, просто значение DEFAULT для «last_modified» должно быть CURRENT_TIMESTAMP, а? – jmhend