Fungsi Tersuai dengan Kekangan Semak dalam SQL Server 2008
Dalam SQL Server 2008, anda boleh mencipta fungsi tersuai untuk menguatkuasakan kekangan semakan. Ini berguna apabila anda perlu menyemak data merentas berbilang jadual atau melakukan pengesahan yang kompleks.
Pernyataan Masalah:
Anda mempunyai dua jadual, tempat dan acara sedia ada, dan anda ingin memastikan bahawa nilai dalam lajur_jangka_kehadiran bagi jadual acara sentiasa kurang daripada atau sama dengan lajur_maksimum_kapasiti tempat tempat tersebut jadual.
Sintaks Fungsi Tersuai:
Fungsi tersuai mengambil sintaks berikut:
CREATE FUNCTION [schema_name].[function_name] ( [parameter_list] ) RETURNS [return_type] AS BEGIN -- Function body RETURN [return_value]; END;
Pernyataan Sertai untuk Kekangan Semak:
Untuk mencipta kekangan semak yang membandingkan data daripada dua jadual, anda boleh menggunakan pernyataan gabungan dalam klausa CHECK. Klausa JOIN membolehkan anda menentukan hubungan antara dua jadual dan lajur yang hendak dibandingkan.
Penyelesaian:
Kod berikut mencipta fungsi tersuai bernama CheckVenueCapacity dan kekangan semak yang menggunakan fungsi untuk menguatkuasakan peraturan kapasiti:
CREATE FUNCTION dbo.CheckVenueCapacity (@venue_id int, @capacity int) RETURNS int AS BEGIN DECLARE @retval int SELECT @retval = CASE WHEN venue_max_capacity >= @capacity THEN 0 ELSE 1 END FROM venues WHERE venue_id = @venue_id RETURN @retval END; GO ALTER TABLE events ADD CONSTRAINT chkVenueCapacity CHECK (dbo.CheckVenueCapacity(event_venue_id, event_expected_attendance) = 0);
Penyelesaian ini menggunakan ungkapan kes dalam fungsi untuk mengembalikan 0 jika kapasiti mencukupi dan 1 sebaliknya. Kekangan semakan kemudian menyemak nilai pulangan fungsi dan menghalang sebarang peristiwa daripada disimpan jika melebihi kapasiti.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Fungsi Tersuai dengan Kekangan Semak dalam SQL Server 2008 untuk Mengesahkan Data Merentasi Berbilang Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!