Saya punya masalah: Saya perlu menghapus kolom dari database SQLite saya. Saya menulis kueri ini
alter table table_name drop column column_name
tapi tidak berhasil. Tolong bantu aku.
Dari: http://www.sqlite.org/faq.html :
(11) Bagaimana cara menambah atau menghapus kolom dari tabel yang ada di SQLite.
SQLite memiliki dukungan ALTER TABLE terbatas yang dapat Anda gunakan untuk menambahkan kolom ke akhir tabel atau untuk mengubah nama tabel. Jika Anda ingin membuat perubahan yang lebih kompleks dalam struktur tabel, Anda harus membuat ulang tabel tersebut. Anda dapat menyimpan data yang ada ke tabel sementara, melepaskan tabel lama, membuat tabel baru, lalu menyalin kembali data dari tabel sementara.
Misalnya, Anda memiliki tabel bernama "t1" dengan nama kolom "a", "b", dan "c" dan Anda ingin menghapus kolom "c" dari tabel ini. Langkah-langkah berikut menggambarkan bagaimana ini dapat dilakukan:
BEGIN TRANSACTION; CREATE TEMPORARY TABLE t1_backup(a,b); INSERT INTO t1_backup SELECT a,b FROM t1; DROP TABLE t1; CREATE TABLE t1(a,b); INSERT INTO t1 SELECT a,b FROM t1_backup; DROP TABLE t1_backup; COMMIT;
TEMPORARY
dariCREATE TABLE
.Alih-alih menghapus tabel cadangan, cukup ganti namanya ...
sumber
t1
.Untuk kesederhanaan, mengapa tidak membuat tabel cadangan dari pernyataan pilih?
sumber
TEXT
.Opsi ini hanya berfungsi jika Anda dapat membuka DB di Browser DB seperti Browser DB untuk SQLite .
Di Browser DB untuk SQLite:
sumber
=> Buat tabel baru langsung dengan query berikut:
=> Sekarang masukkan data ke dalam nama_tabel dari tabel_yang ada dengan kueri berikut:
=> Sekarang jatuhkan tabel_yang ada dengan kueri berikut:
sumber
Untuk SQLite3 c ++:
sumber
Saya telah membuat fungsi Python di mana Anda memasukkan tabel dan kolom untuk dihapus sebagai argumen:
Sesuai info tentang jawaban Duda dan MeBigFatGuy, ini tidak akan berfungsi jika ada kunci asing di atas meja, tetapi ini dapat diperbaiki dengan 2 baris kode (membuat tabel baru dan tidak hanya mengganti nama tabel sementara)
sumber
Jika ada yang membutuhkan fungsi PHP (hampir) siap pakai, berikut ini didasarkan pada jawaban ini :
Berbeda dengan jawaban lain, SQL yang digunakan dalam pendekatan ini tampaknya mempertahankan tipe data kolom, sedangkan sesuatu seperti jawaban yang diterima tampaknya menghasilkan semua kolom menjadi tipe
TEXT
.Pembaruan 1:
SQL yang digunakan memiliki kekurangan yaitu
autoincrement
kolom tidak dipertahankan.sumber
Untuk berjaga-jaga jika itu bisa membantu seseorang seperti saya.
Berdasarkan situs resmi dan jawaban yang diterima , saya membuat kode menggunakan C # yang menggunakan paket System.Data.SQLite NuGet.
Kode ini juga mempertahankan kunci Primer dan kunci Asing .
KODE di C #:
sumber
Untuk info lebih lanjut: https://www.techonthenet.com/sqlite/tables/alter_table.php
sumber