इसके लिए एक अभिकथन की आवश्यकता होती है, जिसे SQL मानक में परिभाषित किया गया है लेकिन Oracle में लागू नहीं किया गया है। (यद्यपि उन्हें पेश करने के लिए कदम हैं )।
आप इसे पारदर्शी रूप से लागू करने के लिए एक भौतिक दृष्टिकोण का उपयोग कर सकते हैं।
create materialized view project_manager
refresh on commit
as
select Project_manager_employee_id
, count(*) as no_of_projects
from project
group by Project_manager_employee_id
/
जादू है:
alter table project_manager
add constraint project_manager_limit_ck check
( no_of_projects <= 3 )
/
यदि प्रबंधक के लिए परियोजनाओं की संख्या तीन से अधिक हो जाती है, तो यह चेक बाधा भौतिक दृश्य को ताज़ा होने से रोकेगी, जो विफलता ट्रिगर डालने या अद्यतन को विफल करने का कारण बनेगी। बेशक यह सुरुचिपूर्ण नहीं है।
चूंकि एमव्यू प्रतिबद्ध (यानी लेन-देन) पर रीफ्रेश किया गया है, इसलिए आपको project
पर एक लॉग बनाना होगा टेबल:
create materialized view log on project