Knex: Opción de cascada al soltar la mesa

Creado en 12 sept. 2015  ·  3Comentarios  ·  Fuente: knex/knex

Sería útil tener algo como esto:

knex.schema.dropTable('users', true);

//OR

knex.schema.cascade().dropTable('users');

Generaría:

DROP TABLE users CASCADE;

Comentario más útil

Bueno, esto es específico del dialecto. Lo que es aún peor es que, según la documentación de MySQL , la palabra clave CASCADE está permitida pero no hace absolutamente nada. (Aparte, MySQL también ignora silenciosamente las restricciones CHECK y esto me mordió en el pasado).

Creo que si incluimos esta funcionalidad (que me gustaría), debe haber una implementación alternativa para los dialectos que carecen de una implementación adecuada CASCADE o, si no hay forma de implementarla con una alternativa y error debe ser arrojado.

Por ejemplo, en MySQL puede consultar INFORMATION_SCHEMA.KEY_COLUMN_USAGE y crear un gráfico dirigido de la base de datos con nodos para cada combinación de table_name + '.' + column_name y bordes desde REFERENCED_TABLE_NAME.REFERENCED_COLUMN_NAME hasta TABLE_NAME.COLUMN_NAME . Luego realiza una ordenación topológica en el gráfico y le da el orden de colocación. He hecho esto, y funciona bastante bien. Lo bueno de usar INFORMATION_SCHEMA también es que la implementación debe ser portátil entre los dialectos de SQL. Si eso es cierto o no en la práctica es una historia completamente diferente.

Todos 3 comentarios

Lo mismo para .truncate

+1

Bueno, esto es específico del dialecto. Lo que es aún peor es que, según la documentación de MySQL , la palabra clave CASCADE está permitida pero no hace absolutamente nada. (Aparte, MySQL también ignora silenciosamente las restricciones CHECK y esto me mordió en el pasado).

Creo que si incluimos esta funcionalidad (que me gustaría), debe haber una implementación alternativa para los dialectos que carecen de una implementación adecuada CASCADE o, si no hay forma de implementarla con una alternativa y error debe ser arrojado.

Por ejemplo, en MySQL puede consultar INFORMATION_SCHEMA.KEY_COLUMN_USAGE y crear un gráfico dirigido de la base de datos con nodos para cada combinación de table_name + '.' + column_name y bordes desde REFERENCED_TABLE_NAME.REFERENCED_COLUMN_NAME hasta TABLE_NAME.COLUMN_NAME . Luego realiza una ordenación topológica en el gráfico y le da el orden de colocación. He hecho esto, y funciona bastante bien. Lo bueno de usar INFORMATION_SCHEMA también es que la implementación debe ser portátil entre los dialectos de SQL. Si eso es cierto o no en la práctica es una historia completamente diferente.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

fsebbah picture fsebbah  ·  3Comentarios

zettam picture zettam  ·  3Comentarios

koskimas picture koskimas  ·  3Comentarios

ghost picture ghost  ·  3Comentarios

nklhrstv picture nklhrstv  ·  3Comentarios