Wednesday, May 8, 2013

Table-д хамаарах бүх foreign key constraint-г олох

1. Оршил
Хэсэг хугацааны өмнө манай програмд ямар нэг бичлэгийг устгах үед тухайн бичлэгийг ашигласан газар байгаа эсэхийг нь шалгадаг юм хийх хэрэгтэй боллоо. Тэгэхийн тулд ямар нэг table-д хамаатай бүх foreign key constraint-г олдог view бичээд constraint-нх нь зааж буй table-д тухайн бичлэгийн маань id байна уу гэдгийг шалгах function бичих хэрэгтэй болов. Тэр нь ямар ч хамаагүй table байж болох бөгөөд арр ажиллаж байх үед (runtime) шалгах хэрэгтэй байсан юм.

2. Өрнөл
Oracle-н өөрийнх нь ALL_CONS_COLUMNS, ALL_CONSTRAINTS гэсэн view-үүд байдаг бөгөөд эдгээрийг хооронд нь Join хийж ашиглаад хүссэн үр дүнгээ авч болох юм байна. Гэвч эдгээр нь хэт нүсэр view болоод тэр үү их удаад байлаа. Runtime үед ашиглах болохоор илүү хурдан арга хэрэгтэй болохоор нь эдгээр view-үүдийн доторх query-г нь задалж харж байгаад өөрөө нэг view бичив.

3. Хариу
Үүгээр view үүсгэвэл хамаагүй хурдан юм билээ. Гэхдээ анхаарах ёстой зүйл нь энэ view-г ажиллуулахын тулд, тодорхой эрхтэй байх хэрэгтэй юм. Доор тэдгээр эрхийг нь бичлээ. [USERNAME] гэсэн хэсэгт тухайн user-н name-г нь бичнэ.

4. Ашиглалт
Ингээд гол нь энэ view-г ашиглаж холбоотой бичлэг байгаа эсэхийг нь шалгадаг функц-ээ бичье. Энэ функц нь 3 параметр авна: Хайх гэж буй table-н нэр, Тэр table-нхээ primary key-н утга (Баганы нэр хэрэггүй), Мөн хайх явцад ямар ямар table-г оролцуулахгүй вэ гэдгийг.
Жич: Энэ аргаа энд хуваалцсан байгаа шүү.

No comments:

Post a Comment