Apakah mungkin untuk mempertahankan kunci utama pada kacamata featur berversi tanpa kode objek busur?

11

Karena bukan ide yang baik untuk menggunakan ObjectIDs sebagai kunci utama dalam hubungan, beberapa kolom lain perlu digunakan. Apakah mungkin untuk menggunakan sekuens DBMS untuk mengisi kolom kunci utama dalam kacamata featur berversi, atau apakah saya perlu menulis kode arcobjects untuk melakukan ini?

Saya pernah mendengar Global ID dapat digunakan , tetapi tabel yang terkait dengan DBA non-GIS sering tidak menyukai ide ini.

Kirk Kuykendall
sumber
Memindahkan jawaban saya ke komentar karena ingatan saya buruk dan mungkin tidak berfungsi dengan baik: Beberapa tahun yang lalu, saya mencoba menggunakan pemicu sisipkan pada tabel tambah. Jika saya ingat dengan benar, itu berhasil. Saya akhirnya (dan dengan cepat) pergi ke solusi ArcObjects (yang disebut prosedur tersimpan), karena itu lebih mudah (bagi saya) karena saya tidak harus menulis pemicu baru ketika menambahkan / membuat versi baru.
Jay Cummins
2
Saya pikir itu adalah pemicu SETELAH INSERT (oracle) dengan cek nol, sehingga baris baru akan mendapatkan nilai kunci utama yang ada jika dipindahkan. Jika itu nol, itu akan terisi. Mungkin saya salah dan itu tidak berfungsi dengan benar dan saya tidak menyadarinya. Database apa yang digunakan?
Jay Cummins
@ Jay, terima kasih sudah menjelaskan. Alasan utama saya untuk mengajukan pertanyaan ini adalah untuk menentukan apakah ada pendekatan lain untuk masalah ini selain kode arcobjects yang telah saya tulis untuk melakukan ini. Saya tidak ingin memberi tahu seseorang bahwa solusi saya adalah satu-satunya solusi yang mungkin tanpa menyelidiki secara menyeluruh. Dan jika demikian, betapa sulitnya mempertahankannya. Saya hanya sesekali menulis prosedur tersimpan, dan sebagian besar di server sql. Saya curiga ada cara untuk melakukan ini pada level dbms (bukan arcobjects) tetapi tidak pernah melihatnya dengan seksama di semua dbms.
Kirk Kuykendall

Jawaban:

7

Ya, itu mungkin - dengan beberapa peringatan.

Anda dapat melakukannya dengan pemicu - tetapi implementasinya akan spesifik-DBMS (karena Anda harus mengimplementasikan pemicu SETELAH INSERT menggunakan mekanisme basis data (spesifik) yang mendasarinya.

Anda tidak akan dapat menentukan batasan UNIQUE dari jenis apa pun di bidang itu karena Tabel Sisipan dan Pangkalan berpotensi memiliki entri duplikat untuk setiap baris yang Anda modifikasi (Itulah cara pembaruan dimodelkan dalam database berversi). Jika Anda melakukan kesalahan dengan melakukan ini di tabel dasar, Anda akhirnya akan menyadari ini ketika operasi kompres Anda mulai gagal ...

Ragi Yaser Burhum
sumber