Studio Pengurusan SQL Server 2008: Pelaksanaan Pertanyaan Tidak Dijangka Walaupun Sintaks Tidak Sah
SQL Server 2008 Management Studio kadangkala mempamerkan tingkah laku balas intuitif berkenaan ralat sintaks. Kes baru-baru ini melibatkan pertanyaan yang merujuk kepada lajur yang tidak wujud ("hs_id") dalam subkueri, namun pertanyaan itu dilaksanakan tanpa ralat.
Struktur pertanyaan adalah kunci untuk memahami tingkah laku ini. Pernyataan DELETE
luar menyasarkan jadual Photo
, menggunakan subkueri untuk mengenal pasti baris untuk pemadaman. Subkueri ini memilih "hs_id" daripada jadual HotelSupplier
di mana "id = 142".
Ralat terletak pada subkueri: HotelSupplier
tidak mempunyai lajur bernama "hs_id"; nama lajur yang betul ialah "hs_key". Walau bagaimanapun, pertanyaan luar ada mengandungi "hs_id" (dalam jadual Photo
). Ini membolehkan SQL Server menyelesaikan rujukan "hs_id" yang tidak jelas dalam subkueri kepada lajur "hs_id" dalam jadual Photo
.
Oleh itu, subkueri mengembalikan satu set nilai "hs_id" berdasarkan data jadual Photo
, yang kemudiannya digunakan untuk menapis operasi DELETE
. Perlaksanaan pertanyaan yang berjaya, walaupun terdapat ralat sintaks awal, berpunca daripada peleraian lajur tersirat ini.
Tingkah laku ini, walaupun berkemungkinan mengejutkan, sebenarnya tidak bermasalah. Ia menekankan keperluan kritikal untuk rujukan lajur eksplisit (menggunakan nama atau alias yang layak sepenuhnya) untuk mengelakkan kekaburan dan mengekalkan integriti data.
Atas ialah kandungan terperinci Bagaimanakah Pertanyaan SQL Server 2008 dengan Rujukan Lajur Tidak Sah Masih Berjaya Melaksanakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!