Več

Ali je mogoče zapise ali atribute za nedoločen čas zakleniti, če je polje izpolnjeno?

Ali je mogoče zapise ali atribute za nedoločen čas zakleniti, če je polje izpolnjeno?


Ustvarjam dodatek c# ArcGIS, kjer imam razred lastnosti, shranjen v Oracle -u, ko bo funkcija ustvarjena, bodo nekatera polja v tabeli zapolnjena. Če je polje X zapolnjeno, bodo določena polja zaklenjena, če je polje Y zapolnjeno, bodo zaklenjena nekatera druga polja in če je polje Z zapolnjeno, bo geometrija zaklenjena.

Zaklenjeno pomeni, da ni mogoče urejati (glede na geometrijo ali atribute) v dodatku in zunaj njega v ArcGIS ali celo v Oracle.

Je to mogoče kaj narediti? Če je tako, ima kdo kakšne napotke za začetek?

UREDI - Morda obstaja scenarij, ko se razred lastnosti združi s tabelo in ta miza bo imela polje, ki zaklene geometrijo. Kako bi bilo mogoče zakleniti prostorsko mizo?


V ArcMap -u lahko nastavite polje za branje samo. Ko ste v načinu prikaza tabele, kliknite glavo in si oglejte njene lastnosti. Hitro iskanje API -ja ArcObjects in njegovega vmesnika IFieldInfo3 ki lahko nastavi to lastnost. To lahko rešite prek ILayerFields vmesnik.


Če želite, da te omejitve veljajo na ravni zbirke podatkov, potem bi jih verjetno morali izvajati, ArcGIS ali ArcSDE uporabniku z dostopom SQL ne bi mogli preprečiti posodobitev.

Za poslovno rešitev Oracle ponuja navidezno zasebno bazo podatkov, ki dovoljenjem zbirke podatkov doda razčlenjenost vrstic in stolpcev, vendar je to verjetno nedosegljivo za vaš projekt.

Alternativa bi lahko bila imetipred posodobitvijoinna vložkusprožilci na vaši mizi, ki preprečujejo uporabo posodobitev glede na vaša pravila.

Te bodo uveljavljene, ne glede na to, ali so bile posodobitve izvedene s strani Oracle ali vašega dodatka, čeprav morate biti pri tej vrsti sprožilca previdni, da zagotovite, da je logika pravilna, saj bi sicer lahko izgubili posodobitve. npr.

Ustvari ali zamenjaj TRIGGER TR_PREVENT_UPDATES PRED POSVEŠEVANJEM NA MY_TABLE REFERENCE NEW AS NEW STARI AS STAR ZA EACH ROW BEGIN if: old.x ni null then - Prepreči posodabljanje polj, če je nastavljeno x - Lahko prezrete nove vrednosti ali vržete napaka: new.col1: =: old.col1; : new.col2: =: old.col2; - S tem boste tiho spustili uporabniške spremembe. konec če; konec;

Če potrebujete pomoč pri nastavitvi sprožilca baze podatkov, bi bila najboljša skupnost v pomoč stackoverflow.