Saya ingin menulis kueri untuk MS SQL Server yang menambahkan kolom ke dalam tabel. Tapi saya tidak ingin tampilan kesalahan, ketika saya menjalankan / menjalankan permintaan berikut.
Saya menggunakan kueri semacam ini untuk menambahkan tabel ...
IF EXISTS (
SELECT *
FROM sys.objects
WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[Person]')
AND TYPE IN (N'U')
)
Tapi saya tidak tahu cara menulis kueri ini untuk kolom.
sql-server
add
not-exists
Tavousi
sumber
sumber
sys.tables
alih-alih "generik"sys.objects
- maka Anda tidak perlu menentukan jenis secara eksplisit (sudah jelas dari yangsys.tables
sudah ....)Jawaban:
Anda dapat menggunakan konstruksi yang sama dengan menggunakan
sys.columns
tabel iosys.objects
.sumber
EXISTS
klausa identik. Hal-hal sukaSELECT 1
atauSELECT TOP 1
tidak perlu. TheEXISTS
klausul itu sendiri menceritakan query optimizer hanya melakukan minimum membaca diperlukan untuk mengevaluasiEXISTS
... setidaknya di SQL Server. Mesin DB lainnya mungkin memiliki pengoptimal permintaan yang lebih atau kurang efisien.ADD Column
pertanyaan Anda ... Anda harus menjalankannya terlalu sering!sumber
COL_LENGTH('table_name', '[column_name]')
selalu mengembalikan nol di SQL Server 2016 (COL_LENGTH('[table_name]', 'column_name') works as expected
).Alternatif lain. Saya lebih suka pendekatan ini karena kurang menulis tetapi keduanya mencapai hal yang sama.
Saya juga memperhatikan bahwa Anda sedang mencari di mana meja ada yang jelas hanya ini
sumber
Berikut variasi lain yang berfungsi untuk saya.
IF NOT EXISTS (SELECT 1 FROM SYS.COLUMNS....
sumber
Semoga ini bisa membantu. Info lebih lanjut
sumber
Saat memeriksa kolom di basis data lain, Anda cukup memasukkan nama basis data:
sumber
sumber