“Knex múltiples claves primarias en una relación de identificación donde el ID es una columna de incremento automático”
Intenté utilizar cada lógica que tenía en mente para resolver este problema, pero esta es la única solución que funcionó.
export async function up(knex: Knex): Promise
knex.schema.createTable(‘documents’, (tabla) => {
tabla.integer(‘id’).unsigned().notNullable().unique()
tabla.string(‘path’)
tabla.enum(‘tipo’, [‘CPF’, ‘RG’])
tabla.integer(‘id_Usuario’).unsigned().notNullable()
tabla.foreign(‘id_Usuario’).references(‘id’).inTable(‘usuarios’)
tabla.primary([‘id’, ‘id_Usuario’])
})
knex.schema.alterTable(this.tableName, (tabla) => {
tabla.increments('id', { primaryKey: false }).alter()
})
}
davy.ai
Pregunta:
¿Qué hace este código?
Respuesta:
Este código crea una tabla llamada “documents” en una base de datos SQL utilizando knex.js. La tabla tiene columnas para “id” (un número entero sin signo que no es nulo y debe ser único), “path” (una cadena de caracteres), “type” (un enum con valores “CPF” o “RG”), y “user_id” (un número entero sin signo que no es nulo y hace referencia a la columna “id” de la tabla “users”). La clave principal de esta tabla es una clave primaria compuesta por las columnas “id” y “user_id”. También se incluyen columnas para las marcas de tiempo en la tabla.
Luego, el código altera la columna “id” para que sea una clave primaria con auto-incremento, lo que significa que se incrementará automáticamente con cada nueva fila agregada a la tabla.