Rumah >pangkalan data >tutorial mysql >Mengapa SQL Server 2008 Management Studio Membenarkan Padam Pertanyaan dengan Rujukan Lajur Tidak Sah dalam Subkueri Berkorelasi untuk Melaksanakan dengan Berjaya?

Mengapa SQL Server 2008 Management Studio Membenarkan Padam Pertanyaan dengan Rujukan Lajur Tidak Sah dalam Subkueri Berkorelasi untuk Melaksanakan dengan Berjaya?

Patricia Arquette
Patricia Arquetteasal
2025-01-20 01:06:10772semak imbas

Why Does SQL Server 2008 Management Studio Allow a Delete Query with an Invalid Column Reference in a Correlated Subquery to Execute Successfully?

kelakuan semakan sintaks Studio Pengurusan SQL Server 2008

Dalam SQL Server 2008 Management Studio, tingkah laku yang tidak dijangka telah diperhatikan semasa melaksanakan pertanyaan yang mengandungi rujukan lajur yang tidak sah. Pertanyaannya ialah:

<code class="language-sql">delete from Photo where hs_id in (select hs_id from HotelSupplier where id = 142)</code>

Walaupun "hs_id" bukan nama lajur yang sah dalam jadual "HotelSupplier" (nama lajur yang betul ialah "hs_key"), pertanyaan itu berjaya dilaksanakan dan memadamkan semua baris dalam jadual "Foto". Ini menimbulkan persoalan: Sekiranya pertanyaan gagal disebabkan oleh isu sintaks?

Jawapannya terletak pada konsep subkueri berkorelasi. Pernyataan "DELETE" dikaitkan dengan subkueri, yang bermaksud bahawa rujukan "hs_id" dalam subquery diselesaikan kepada lajur "hs_id" dalam pertanyaan luar ("Foto").

Ini adalah tingkah laku yang sah dan membenarkan pertanyaan merujuk lajur dalam jadual induk tanpa menyatakan nama jadual secara eksplisit. Dalam kes ini, hasilnya adalah bersamaan dengan:

<code class="language-sql">delete from Photo where Photo.hs_id in (select Photo.hs_id from HotelSupplier where id = 142)</code>

Corak pertanyaan luar disebarkan kepada subkueri, walaupun subkueri itu sendiri tidak menayangkan sebarang lajur secara eksplisit.

Oleh itu, ia dianggap tingkah laku biasa untuk SQL Server untuk membenarkan pertanyaan "tidak mematuhi sintaks" sedemikian berjaya dan mengaitkan rujukan lajur yang tidak layak dalam subkueri dengan pertanyaan luar.

Atas ialah kandungan terperinci Mengapa SQL Server 2008 Management Studio Membenarkan Padam Pertanyaan dengan Rujukan Lajur Tidak Sah dalam Subkueri Berkorelasi untuk Melaksanakan dengan Berjaya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn