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
Lepaskan: 2025-01-20 01:06:10
asal
829 orang telah melayarinya

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:

delete from Photo where hs_id in (select hs_id from HotelSupplier where id = 142)
Salin selepas log masuk

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:

delete from Photo where Photo.hs_id in (select Photo.hs_id from HotelSupplier where id = 142)
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan