Bagaimana cara menghapus kolom dari tabel yang ada?
Saya punya meja MEN
dengan Fname
danLname
Saya perlu menghapus Lname
Bagaimana cara melakukannya?
sql-server
Gali
sumber
sumber
Jawaban:
sumber
Umum:
Dalam kasus Anda:
sumber
Contoh Anda sederhana dan tidak memerlukan perubahan tabel tambahan tetapi secara umum ini tidak sepele.
Jika kolom ini direferensikan oleh tabel lain maka Anda perlu mencari tahu apa yang harus dilakukan dengan tabel / kolom lainnya. Salah satu opsi adalah menghapus kunci asing dan menyimpan data yang dirujuk di tabel lain.
Pilihan lain adalah menemukan semua kolom referensi dan menghapusnya juga jika tidak diperlukan lagi.
Dalam kasus seperti itu tantangan sebenarnya adalah menemukan semua kunci asing. Anda dapat melakukan ini dengan menanyakan tabel sistem atau menggunakan alat pihak ketiga seperti Pencarian ApexSQL (gratis) atau pelacak Ketergantungan Gerbang Merah (premium tetapi lebih banyak fitur). Ada seluruh utas pada kunci asing di sini
sumber
Ini jawaban yang benar:
Tapi ... jika
CONSTRAINT
ada padaCOLUMN
, maka Anda harusDROP
yangCONSTRAINT
pertama, maka Anda akan dapatDROP
denganCOLUMN
. Untuk menjatuhkanCONSTRAINT
, jalankan:sumber
constraint
untuk Kolom ?Di SQL Server 2016 Anda bisa menggunakan pernyataan DIE baru.
Kueri di atas adalah menjalankan kembali
drops
kolomnya hanya jika ituexists
dalam tabel yang lain itu tidak akan membuang kesalahan.Alih-alih menggunakan
IF
pembungkus besar untuk memeriksa keberadaancolumn
sebelum menjatuhkannya, Anda bisa menjalankanDDL
pernyataan di atassumber
Pertanyaannya adalah, bisakah Anda hanya menghapus kolom dari tabel yang tidak ada ;-)
sumber
Jawaban sederhana untuk ini adalah menggunakan ini:
Lebih dari satu kolom dapat ditentukan seperti ini:
Dari SQL Server 2016 juga dimungkinkan untuk hanya menjatuhkan kolom hanya jika ada. Ini menghentikan Anda mendapatkan kesalahan saat kolom tidak ada yang mungkin tidak Anda pedulikan.
Ada beberapa prasyarat untuk menjatuhkan kolom. Kolom yang dijatuhkan tidak boleh:
Jika salah satu di atas benar, Anda harus menghentikan asosiasi tersebut terlebih dahulu.
Juga, harus dicatat, bahwa menjatuhkan kolom tidak merebut kembali ruang dari hard disk sampai indeks tabel berkerumun dibangun kembali. Karena itu, sering kali ide yang baik untuk mengikuti hal di atas dengan perintah tabel rebuild seperti ini:
Akhirnya karena beberapa orang mengatakan ini bisa lambat dan mungkin akan mengunci tabel selama durasi. Dimungkinkan untuk membuat tabel baru dengan struktur yang diinginkan dan kemudian mengganti nama seperti ini:
Tapi berhati-hatilah ada jendela untuk kehilangan data dari baris yang disisipkan di sini antara perintah pilih pertama dan nama ganti terakhir.
sumber
Untuk menambahkan kolom di tabel yang ada:
Untuk menghapus kolom di tabel yang ada:
sumber
Ini juga dapat dilakukan melalui GUI SSMS. Yang menyenangkan tentang metode ini adalah memperingatkan Anda jika ada hubungan pada kolom itu dan juga dapat secara otomatis menghapusnya juga.
Seperti yang saya katakan sebelumnya, jika ada hubungan yang juga perlu dihapus, ia akan menanyakan kepada Anda pada saat ini apakah Anda ingin menghapusnya juga. Anda mungkin perlu melakukannya untuk menghapus kolom.
sumber
Jika Anda menggunakan C # dan kolom Identity adalah int, buat instance baru int tanpa memberikan nilai apa pun padanya. Itu berhasil bagi saya.
sumber
Sintaksis:
Sebagai contoh:
sumber