varias una trigger tablas tabla para misma insertar hacer genérico crear con como campo cambios auditar antes actualizar android database triggers fts3

android - una - ¿Cómo puedo crear un disparador entre la tabla normal y la tabla fts3?



trigger genérico para auditar cambios en una tabla mysql (1)

He tenido problemas al cambiar entre tablas FTS3 y tablas de bases de datos normales. Mi aplicación es muy simple y permite al usuario agregar contactos a una base de datos y pueden buscar contactos que coincidan con la consulta de búsqueda (por qué utilicé una tabla fts) y el resultado se muestra en una lista con un onItemclicklistener. Pero cuando hago clic en el elemento, aparece un error. He reenviado este error a la base de datos (si uso una base de datos normal funciona, pero si utilizo fts no lo hace). Así que decidí usar ambos tipos de bases de datos y me preguntaba si alguien podría mostrarme cómo se crea un desencadenador para sincronizar las bases de datos.

Mi primera base de datos es CONTACTO (nombre de la base de datos) y la tabla se llama CONTACTOS. La segunda tabla de la base de datos es CONTACTS_FTS. Todo lo que estoy buscando es COL_NAME, ¿eso es todo lo que necesito en mi tabla CONTACTS_FTS? Me preguntaba si alguien podría verificar si mi activador es válido.

public static final String DATABASE_NAME = "CONTACT"; public static final String DATABASE_TABLE = "CONTACTS"; private static final String DATABASE_TABLE_FTS = "CONTACTS_FTS"; private static final int DATABASE_VERSION = 20; private Context ourContext; private DbHelper DBHelper; private static SQLiteDatabase db; private static final String DATABASE_CREATE = "CREATE TABLE " + DATABASE_TABLE + " (" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_NAME + " TEXT NOT NULL, " + COL_EMAIL + " TEXT NOT NULL, " + COL_CELL + " TEXT NOT NULL, " + COL_ARRIVAL + " TEXT NOT NULL, " + COL_DEPARTURE + " TEXT NOT NULL, " + COL_FLIGHT_NUMBER + " TEXT NOT NULL, " + COL_HOTEL_ROOM_NUMBER + " TEXT NOT NULL, " + COL_EVENT1 + " TEXT NOT NULL, " + COL_EVENT2 + " TEXT NOT NULL, " + COL_EVENT1_ROOM + " TEXT NOT NULL, " + COL_EVENT2_ROOM + " TEXT NOT NULL);"; private static final String DATABASE_CREATE_FTS = "CREATE VIRTUAL TABLE " + DATABASE_TABLE_FTS + " USING fts3(" + "content=" + "/"CONTACTS/", " + COL_NAME + ");"; private static final String Trigger = "CREATE TRIGGER contacts_Trigger " + "AFTER INSERT "+ "ON " + DATABASE_TABLE + " BEGIN " + "INSERT " + DATABASE_TABLE_FTS + " SET " + COL_NAME + " = new.COL_NAME WHERE " + COL_ID + " = old.COL_ID;" + " END;";


Creo que la opción para la tabla de "contenido externo" solo está disponible para FTS4 y no para FTS3.

Contenido externo Tablas FTS4

Intente usar la tabla FTS4 en lugar de FTS3.