Bolehkah Semak Kekangan Rujukan Jadual Lain?
Banyak pangkalan data menyokong kekangan semakan sebagai cara untuk menguatkuasakan integriti data. Kekangan ini membolehkan anda menentukan syarat yang mesti dipenuhi untuk data dimasukkan ke dalam atau dikemas kini dalam jadual.
Pertimbangkan senario dengan dua jadual: ProjectTimeSpan dan SubProjectTimeSpan. Setiap jadual termasuk lajur Tarikh Mula dan Tarikh Tamat. Anda ingin membuat kekangan semak dalam SubProjectTimeSpan yang memastikan nilai StartDate dan EndDate berada dalam ProjectTimeSpan.StartDate dan ProjectTimeSpan.EndDate julat.
Adakah kekangan semakan sedemikian mungkin?
Ya, adalah mungkin untuk mencipta kekangan sedemikian menggunakan fungsi. Berikut ialah contoh menggunakan sintaks SQL Server:
alter table SubProjectTimeSpan add constraint chk_CheckFunction check (dbo.CheckFunction() = 1)
Dalam contoh ini, dbo.CheckFunction() ialah fungsi yang ditentukan pengguna yang mengembalikan 1 jika StartDate dan nilai Tarikh Akhir dalam SubProjectTimeSpan termasuk dalam julat ProjectTimeSpan.StartDate dan ProjectTimeSpan.EndDate. Berikut ialah contoh pelaksanaan fungsi:
create function dbo.CheckFunction() returns int as begin return (select 1 where exists(select 1 from ProjectTimeSpan where StartDate <= SubProjectTimeSpan.StartDate and EndDate >= SubProjectTimeSpan.EndDate)) end
Fungsi ini merujuk jadual ProjectTimeSpan untuk mengesahkan kekangan. Dengan menggunakan fungsi, anda boleh membuat kekangan semak yang merujuk nilai dalam jadual lain, memberikan fleksibiliti dalam menguatkuasakan integriti data merentas berbilang jadual.
Atas ialah kandungan terperinci Bolehkah Semak Kekangan Rujukan Jadual Lain dalam Pangkalan Data SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!