Restricción de tabla SQLite: única en múltiples columnas
sqlite rename column (2)
Bueno, tu sintaxis no coincide con el enlace que incluiste, que especifica:
CREATE TABLE name (column defs)
CONSTRAINT constraint_name -- This is new
UNIQUE (col_name1, col_name2) ON CONFLICT REPLACE
Puedo encontrar "gráficos" de sintaxis en este sitio web de SQLite, pero no hay ejemplos y mi código está fallando. Tengo otras tablas con restricciones únicas en una sola columna, pero quiero agregar una restricción a la tabla en dos columnas. Esto es lo que tengo que está causando una excepción SQLiteException con el mensaje "error de sintaxis".
CREATE TABLE name (column defs)
UNIQUE (col_name1, col_name2) ON CONFLICT REPLACE
Estoy haciendo esto basado en lo siguiente:
Para que quede claro, la documentación en el enlace que proporcioné dice que el CONTSTRAINT name
debe venir antes de mi definición de restricción.
Sin embargo, algo que puede conducir a la solución es que lo que sigue a mis definiciones de columnas entre paréntesis es de lo que se queja el depurador.
Si pongo
...last_column_name last_col_datatype) CONSTRAINT ...
el error está cerca de "RESTRICCIÓN": error de sintaxis
Si pongo
...last_column_name last_col_datatype) UNIQUE ...
el error está cerca de "ÚNICA": error de sintaxis
Coloque la declaración UNIQUE dentro de la sección de definición de columnas:
CREATE TABLE name (column defs, UNIQUE (col_name1, col_name2) ON CONFLICT REPLACE);
Ejemplo de trabajo:
CREATE TABLE a (i INT, j INT, UNIQUE(i, j) ON CONFLICT REPLACE);