เป็นไปได้หรือไม่ที่จะรักษาคีย์หลักในฟีเจอร์คลาสที่มีเวอร์ชันโดยไม่มีรหัส arcobjects?


11

เนื่องจากไม่ใช่ความคิดที่ดีที่จะใช้ ObjectID เป็นคีย์หลักในความสัมพันธ์จึงจำเป็นต้องใช้คอลัมน์อื่น ๆ เป็นไปได้หรือไม่ที่จะใช้ลำดับ DBMS เพื่อเติมคอลัมน์คีย์หลักในฟีเจอร์คลาสที่เป็นเวอร์ชันหรือฉันจะต้องเขียนโค้ด arcobjects เพื่อทำสิ่งนี้?

ฉันได้ยินมาว่าGlobal ID สามารถใช้งานได้ แต่ผู้ที่ไม่ใช่ GIS DBA กำลังดูแลตารางที่เกี่ยวข้องอยู่บ่อยครั้งที่แนวคิดนี้


การย้ายคำตอบของฉันไปที่ข้อคิดเห็นเนื่องจากหน่วยความจำของฉันไม่ดีและอาจทำงานได้ไม่ถูกต้อง: หลายปีที่ผ่านมาฉันลองใช้ตัวแทรกในตารางเพิ่ม ถ้าฉันจำได้อย่างถูกต้องนั่นก็ใช้ได้ ในที่สุดฉัน (และรวดเร็ว) ไปที่โซลูชัน ArcObjects (ที่เรียกว่าขั้นตอนการจัดเก็บ) เพราะมันง่ายกว่า (สำหรับฉัน) เพราะฉันไม่ต้องเขียนทริกเกอร์ใหม่เมื่อเพิ่ม / กำหนดเวอร์ชันคุณลักษณะใหม่
Jay Cummins

2
ฉันคิดว่ามันเป็นทริกเกอร์ AFTER INSERT (oracle) ที่มีการตรวจสอบค่า null ดังนั้นแถวใหม่จะได้รับค่าคีย์หลักที่มีอยู่ถ้ามันถูกย้าย ถ้ามันเป็นโมฆะมันจะเติม บางทีฉันผิดและมันใช้งานไม่ได้และฉันก็ไม่รู้ตัว กำลังใช้ฐานข้อมูลใดอยู่
Jay Cummins

@ Jay ขอบคุณสำหรับการอธิบายอย่างละเอียด เหตุผลหลักของฉันสำหรับการถามคำถามนี้คือการตรวจสอบว่ามีวิธีอื่นในการแก้ไขปัญหานี้นอกเหนือจากรหัส arcobjects ฉันได้เขียนให้ทำ ฉันไม่ต้องการบอกใครสักคนว่าทางออกของฉันเป็นทางออกเดียวที่ทำได้โดยไม่ต้องตรวจสอบอย่างละเอียด และถ้าเป็นเช่นนั้นมันยากแค่ไหนที่จะรักษามันไว้ ฉันเขียนขั้นตอนการเก็บไว้เป็นครั้งคราวเท่านั้นและส่วนใหญ่อยู่บนเซิร์ฟเวอร์ sql ฉันสงสัยว่ามีวิธีการทำเช่นนี้ที่ระดับ dbms (แทนที่จะเป็น arcobjects) แต่ไม่เคยดูอย่างใกล้ชิดกับ dbms ทั้งหมด
Kirk Kuykendall

คำตอบ:


7

ใช่มันเป็นไปได้ - มีข้อแม้เล็กน้อย

คุณสามารถทำได้ด้วยทริกเกอร์ - แต่การใช้งานจะเป็นเฉพาะ DBMS (เนื่องจากคุณจะต้องใช้ทริกเกอร์ AFTER INSERT ที่แตกต่างกันโดยใช้กลไกฐานข้อมูล (เฉพาะ)

คุณจะไม่สามารถระบุข้อ จำกัด UNIQUE ชนิดใดก็ได้ในฟิลด์นั้นเนื่องจากส่วนแทรกและตารางฐานอาจมีรายการที่ซ้ำกันสำหรับทุกแถวที่คุณปรับเปลี่ยน หากคุณทำผิดพลาดในการทำเช่นนี้บนโต๊ะพื้นฐานในที่สุดคุณจะตระหนักถึงสิ่งนี้เมื่อการบีบอัดของคุณเริ่มล้มเหลว ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.