Mengesahkan Kekangan Julat Merentasi Jadual Menggunakan Kekangan Semak
Pertimbangkan dua jadual, ProjectTimeSpan dan SubProjectTimeSpan, kedua-duanya mengandungi lajur StartDate dan EndDate. Senario timbul apabila kekangan semakan diingini untuk memastikan bahawa Tarikh Mula dan Tarikh Akhir SubProjectTimeSpan sentiasa berada dalam julat tarikh ProjectTimeSpan yang sepadan.
Kekangan Semakan Konvensional
Biasa semak kekangan biasanya membandingkan nilai dalam jadual yang sama. Walau bagaimanapun, dalam kes ini, syarat tersebut memerlukan nilai rujukan daripada jadual lain.
Melanjutkan Kekangan Semakan dengan Fungsi
Satu penyelesaian ialah menggunakan kekangan semak bersama-sama dengan fungsi yang boleh mendapatkan semula data yang berkaitan daripada ProjectTimeSpan. Dengan mentakrifkan fungsi seperti CheckFunction() dan merujuknya dalam kekangan, pangkalan data boleh mengesahkan julat tarikh secara dinamik terhadap nilai yang disimpan dalam ProjectTimeSpan.
Sebagai contoh, coretan kod berikut menunjukkan cara melaksanakan semakan sedemikian kekangan:
ALTER TABLE SubProjectTimeSpan ADD CONSTRAINT chk_CheckFunction CHECK (dbo.CheckFunction() = 1)
Fungsi CheckFunction boleh ditakrifkan sebagai berikut:
CREATE FUNCTION dbo.CheckFunction() RETURNS INT AS BEGIN RETURN (SELECT 1) END
Fungsi ini boleh mendapatkan semula data yang diperlukan daripada ProjectTimeSpan dan melakukan perbandingan yang diperlukan. Pendekatan ini membenarkan pengesahan dinamik julat tarikh merentas berbilang jadual, menangani penyataan masalah awal.
Atas ialah kandungan terperinci Bagaimanakah Semakan Kekangan Boleh Mengesahkan Kekangan Julat Merentasi Berbilang Jadual Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!