Knex: Opsi kaskade saat menjatuhkan meja

Dibuat pada 12 Sep 2015  ·  3Komentar  ·  Sumber: knex/knex

Akan berguna untuk memiliki sesuatu seperti ini:

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

//OR

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

Akan menghasilkan:

DROP TABLE users CASCADE;

Komentar yang paling membantu

Nah ini dialek khusus. Yang lebih buruk adalah bahwa menurut Dokumentasi MySQL , kata kunci CASCADE diizinkan tetapi sama sekali tidak melakukan apa pun. (Selain itu, MySQL juga secara diam-diam mengabaikan batasan CHECK dan ini mengganggu saya di masa lalu).

Saya pikir jika kita menyertakan fungsionalitas ini (yang saya inginkan), perlu ada implementasi fallback untuk dialek yang tidak memiliki implementasi CASCADE yang tepat atau, jika tidak ada cara untuk mengimplementasikannya dengan fallback, dan error harus dibuang.

Misalnya, di MySQL Anda dapat meminta INFORMATION_SCHEMA.KEY_COLUMN_USAGE dan membuat grafik terarah dari database dengan node untuk setiap kombinasi table_name + '.' + column_name dan edge dari REFERENCED_TABLE_NAME.REFERENCED_COLUMN_NAME hingga TABLE_NAME.COLUMN_NAME . Anda kemudian melakukan pengurutan topologi pada grafik dan itu memberi Anda urutan drop. Saya telah melakukan ini, dan itu bekerja dengan cukup baik. Hal yang baik tentang menggunakan INFORMATION_SCHEMA juga adalah bahwa implementasinya harus portabel di seluruh dialek SQL. Apakah itu benar atau tidak dalam praktiknya adalah cerita yang sangat berbeda.

Semua 3 komentar

Sama untuk .truncate

+1

Nah ini dialek khusus. Yang lebih buruk adalah bahwa menurut Dokumentasi MySQL , kata kunci CASCADE diizinkan tetapi sama sekali tidak melakukan apa pun. (Selain itu, MySQL juga secara diam-diam mengabaikan batasan CHECK dan ini mengganggu saya di masa lalu).

Saya pikir jika kita menyertakan fungsionalitas ini (yang saya inginkan), perlu ada implementasi fallback untuk dialek yang tidak memiliki implementasi CASCADE yang tepat atau, jika tidak ada cara untuk mengimplementasikannya dengan fallback, dan error harus dibuang.

Misalnya, di MySQL Anda dapat meminta INFORMATION_SCHEMA.KEY_COLUMN_USAGE dan membuat grafik terarah dari database dengan node untuk setiap kombinasi table_name + '.' + column_name dan edge dari REFERENCED_TABLE_NAME.REFERENCED_COLUMN_NAME hingga TABLE_NAME.COLUMN_NAME . Anda kemudian melakukan pengurutan topologi pada grafik dan itu memberi Anda urutan drop. Saya telah melakukan ini, dan itu bekerja dengan cukup baik. Hal yang baik tentang menggunakan INFORMATION_SCHEMA juga adalah bahwa implementasinya harus portabel di seluruh dialek SQL. Apakah itu benar atau tidak dalam praktiknya adalah cerita yang sangat berbeda.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

rarkins picture rarkins  ·  3Komentar

koskimas picture koskimas  ·  3Komentar

mtom55 picture mtom55  ·  3Komentar

zettam picture zettam  ·  3Komentar

ghost picture ghost  ·  3Komentar