Có thể duy trì các khóa chính trên featureclass phiên bản mà không cần mã arcobjects?


11

không nên sử dụng ObjectID làm khóa chính trong các mối quan hệ, nên một số cột khác sẽ cần được sử dụng. Có thể sử dụng các chuỗi DBMS để điền vào các cột khóa chính trong featureclass được phiên bản hay tôi sẽ cần phải viết mã arcobjects để làm điều này?

Tôi đã nghe nói ID toàn cầu có thể được sử dụng , nhưng các bảng liên quan đến việc duy trì các DBA không phải của GIS thường cau mày với ý tưởng này.


Chuyển câu trả lời của tôi sang một nhận xét vì bộ nhớ của tôi kém và nó có thể không hoạt động đúng: Một số năm trước, tôi đã thử sử dụng một trình kích hoạt chèn trên bảng thêm. Nếu tôi nhớ lại một cách chính xác, điều đó đã làm việc. Cuối cùng tôi (và nhanh chóng) đã đi đến một giải pháp ArcObjects (được gọi là thủ tục được lưu trữ), bởi vì nó dễ dàng hơn (đối với tôi) vì tôi không phải viết một trình kích hoạt mới khi thêm / phiên bản một phiên bản mới.
Jay Cummins

2
Tôi nghĩ rằng đó là một trình kích hoạt SAU (lời tiên tri) với kiểm tra null, vì vậy hàng mới sẽ nhận được giá trị khóa chính hiện có nếu nó được di chuyển. Nếu nó là null, nó sẽ cư trú. Có lẽ tôi sai và nó không hoạt động đúng và tôi đã không nhận ra điều đó. Cơ sở dữ liệu nào đang sử dụng?
Jay Cummins

@Jay Cảm ơn bạn đã xây dựng. Lý do chính của tôi khi đặt câu hỏi này là để xác định xem có cách tiếp cận nào khác cho vấn đề này ngoài mã arcobjects mà tôi đã viết để làm điều này không. Tôi không muốn nói với ai đó rằng giải pháp của tôi là giải pháp khả thi duy nhất mà không cần điều tra kỹ lưỡng. Và nếu vậy, thật khó để duy trì nó. Tôi chỉ thỉnh thoảng viết các thủ tục được lưu trữ, và hầu hết trong số đó là trên máy chủ sql. Tôi nghi ngờ có một cách để làm điều này ở cấp độ dbms (thay vì arcobjects) nhưng chưa bao giờ xem xét kỹ nó trên tất cả các dbms.
Kirk Kuykendall

Câu trả lời:


7

Vâng, điều đó là có thể - với một vài cảnh báo.

Bạn có thể làm điều đó với các trình kích hoạt - nhưng việc triển khai sẽ dành riêng cho DBMS (vì bạn sẽ phải thực hiện một trình kích hoạt SAU KHI khác nhau bằng cách sử dụng cơ chế cơ sở dữ liệu cơ bản (cụ thể).

Bạn sẽ không thể chỉ định một ràng buộc ĐỘC ĐÁO của bất kỳ loại nào trên trường đó vì Bảng chèn và Bảng cơ sở có thể có các mục trùng lặp cho mỗi hàng mà bạn sửa đổi (Đó là cách cập nhật được mô hình hóa trong cơ sở dữ liệu được phiên bản). Nếu bạn phạm sai lầm khi thực hiện việc này trên bảng cơ sở, cuối cùng bạn sẽ nhận ra điều này khi các hoạt động nén của bạn bắt đầu thất bại ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.