Rumah > pangkalan data > tutorial mysql > Bolehkah Fungsi Bernilai Skalar Melangkau Sekatan Subkueri dalam Pelayan SQL Menyemak Kekangan?

Bolehkah Fungsi Bernilai Skalar Melangkau Sekatan Subkueri dalam Pelayan SQL Menyemak Kekangan?

DDD
Lepaskan: 2025-01-04 14:06:39
asal
222 orang telah melayarinya

Can Scalar-Valued Functions Bypass Subquery Restrictions in SQL Server Check Constraints?

Fungsi Subkueri dalam Kekangan Semak

Penggunaan subkueri dalam kekangan semakan telah menjadi had lama dalam SQL-Server 2008 R2. Artikel ini meneroka isu dan menyediakan penyelesaian alternatif menggunakan fungsi pengembalian skalar.

Masalah:

Apabila cuba mengesahkan nilai lajur terhadap jadual lain menggunakan subkueri dalam kekangan semak, ralat berikut ditemui: "Sub-pertanyaan tidak dibenarkan dalam konteks ini. Hanya ungkapan skalar sahaja dibenarkan."

Latar Belakang:

Kekangan semak digunakan untuk menguatkuasakan integriti pangkalan data dengan menilai ungkapan terhadap setiap baris yang disisipkan atau dikemas kini dalam jadual. Biasanya, ungkapan ini terdiri daripada operasi skalar, bukan subkueri.

Penyelesaian:

Untuk memintas pengehadan ini, fungsi pengembalian skalar tersuai boleh dibuat yang merangkumi keperluan yang diperlukan subquery. Fungsi harus mengeluarkan nilai skalar yang menunjukkan sama ada keadaan subkueri dipenuhi.

Contoh:

Andaikan kita mempunyai jadual yang dipanggil 'Table1' dengan lajur 'MyField' yang perlu disahkan terhadap jadual yang dipanggil 'Jadual2'. Kita boleh mencipta fungsi yang dipanggil 'myFunction' seperti berikut:

CREATE FUNCTION myFunction (
    @field DATATYPE(?)
)
RETURNS VARCHAR(5)
AS
BEGIN
    IF EXISTS (SELECT* FROM Table2 WHERE MYFIELD = @field)
        return 'True'
    return 'False'
END
Salin selepas log masuk

Menggunakan Fungsi:

'myFunction' kini boleh digunakan dalam kekangan semakan seperti berikut:

ALTER TABLE Table1
    WITH CHECK ADD CONSTRAINT CK_Code
    CHECK (myFunction(MYFIELD) = 'True')
Salin selepas log masuk

Ini secara berkesan mencontohi kefungsian subkueri dalam semakan kekangan.

Kesimpulan:

Walaupun subkueri tidak boleh digunakan secara langsung dalam kekangan semak, fungsi pengembalian skalar boleh digunakan untuk mencapai pengesahan yang diingini. Penyelesaian ini membolehkan senario pengesahan data yang lebih kompleks tanpa menjejaskan integriti pangkalan data.

Atas ialah kandungan terperinci Bolehkah Fungsi Bernilai Skalar Melangkau Sekatan Subkueri dalam Pelayan SQL Menyemak Kekangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan