arcobjectsコードなしでバージョン管理されたフィーチャクラスの主キーを維持することは可能ですか?


11

関係の主キーとしてObjectIDを使用するのは得策ではないため、他の列を使用する必要があります。DBMSシーケンスを使用して、バージョン対応フィーチャクラスの主キー列に値を設定することは可能ですか、またはこれを行うにはarcobjectsコードを記述する必要がありますか?

グローバルIDを使用できると聞いたことがありますが、GIS以外のDBAが関連テーブルを管理していると、この考えにしばしば眉をひそめます。


記憶力が乏しく、適切に動作しなかった可能性があるため、答えをコメントに移しました。数年前、addsテーブルで挿入トリガーを使用しようとしました。正しく思い出せば、うまくいきました。新しいフィーチャクラスを追加/バージョン管理するときに新しいトリガーを作成する必要がなかったため(私にとって)簡単だったため、最終的に(そしてすぐに)ArcObjectsソリューション(ストアドプロシージャと呼ばれる)に行きました。
ジェイカミンズ

2
nullチェック付きのAFTER INSERTトリガー(oracle)であったため、新しい行が移動された場合、既存の主キー値が取得されます。nullの場合、データが入力されます。たぶん私は間違っているし、正しく動作していなかったし、気づかなかった。どのデータベースが使用されていますか?
ジェイカミンズ

@Jay詳細をお寄せいただきありがとうございます。この質問をする主な理由は、これを行うために記述したarcobjectsコード以外に、この問題に対する他のアプローチがあるかどうかを判断することです。徹底的に調査することなく、私のソリューションが唯一の可能なソリューションであることを誰かに伝えたくありません。もしそうなら、それを維持することはどれほど難しいか。私はたまにストアドプロシージャを記述しますが、そのほとんどはSQLサーバー上にあります。dbarcレベルで(arcobjectsの代わりに)これを行う方法はあると思いますが、すべてのdbmsで厳密に見たことはありません。
カーククイケンダル

回答:


7

はい、可能です-いくつかの注意事項があります。

トリガーを使用して実行できますが、実装はDBMS固有になります(基になるデータベース(特定の)メカニズムを使用して別のAFTER INSERTトリガーを実装する必要があるためです)。

あなたはなりません挿入し、ベーステーブルが潜在的に変更することを行ごとに重複したエントリを持つことができるので(それは更新がバージョン管理データベースにモデル化されている方法です)、そのフィールド上のあらゆる種類のUNIQUE制約を指定することができます。ベーステーブルでこれを行うのを間違えた場合、圧縮操作が失敗し始めたときに最終的にこれを実現します...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.