एंडोमर के विपरीत, मुझे एक ट्रिगर का उपयोग करके खुशी होगी - लेकिन मैं बाधा जांच को नहीं हटाऊंगा। अगर आप इसे instead of
. के रूप में लागू करते हैं ट्रिगर, आप वास्तविक डिलीट करने से पहले अन्य पंक्तियों को शून्य पर रीसेट कर सकते हैं:
CREATE TRIGGER T_tabData_D
on tabData
instead of delete
as
set nocount on
update tabData set fiData = null where fiData in (select idData from deleted)
delete from tabData where idData in (select idData from deleted)
यह छोटा है, यह संक्षिप्त है, यह आवश्यक नहीं होगा यदि SQL सर्वर एक ही तालिका में विदेशी कुंजी कैस्केड को संभाल सकता है (अन्य आरडीबीएमएस में, आप केवल ON DELETE SET NULL
निर्दिष्ट करने में सक्षम हो सकते हैं। विदेशी कुंजी बाधा के लिए, वाईएमएमवी)।