3

私は最近、数量値下げ割引をインポートする Sage インポート ツールの作成を任されました。

問題の Sage 200 テーブルは次のとおりです。

  • StockItem - メイン商品テーブル
  • StockItemDiscount - メイン割引テーブル
  • StockItemQtyDiscBreak - 割引数量の価格分岐

私の質問とは関係ないので、スキーマ情報で退屈することはありません.3つのテーブルすべての主キーは、 IDが設定されていないBigIntです(ため息).1つのStockItemには多くの割引があり、1つの割引には多くの数量割引があります.休憩。

さて、インポート ルーチンを作成するには、最初に (SQL プロファイラーを使用して) sage で割引と割引を手動で作成した場合に、Sage 200 が SQL で行ったことを分析する必要がありました。私が言うように、Sage 200 は ID 列を使用せず、代わりにカウンター テーブルを使用します。

StockItemDiscount に新しい行を挿入すると、次のことが行われました。

UPDATE [Counter] SET [NextValue] = [NextValue] + 10 WHERE [CounterID] = 1

次に、新しい ID を選択します。

SELECT NextValue FROM Counter WHERE CounterID = 1

次に、カウンターから選択したばかりの新しい値を使用して、新しい行を挿入します。

INSERT INTO StockItemDiscount (StockItemDiscountID, /.../) VALUES (@NewID, /.../) 

私の質問はこれです: 一体なぜセージはこのようにやっているのですか? その背後にある理由は何でしょうか?(具体的には、値を読み取る +10 THEN)

すべてのテーブルも同じカウンターを共有しているため、1 つのテーブルに 5 行あると、別のテーブルの ID にギャップが生じます。

私が尋ねる理由:行を i に挿入した後StockItemDiscount、関連する行を削除してStockItemQtyDiscBreak置換を挿入する必要があります-ただし、SQL プロファイラーを使用すると、5 つ以上の割引を挿入しない限り、カウンターテーブルの増分が表示されません (6 番目でヒットします)カウンター テーブルをもう一度見てみましょう。Sage UI がそれらの 10 個の ID を予約してさまざまな挿入に使用し、必要に応じてさらに 10 個を予約しているように見えます。これは私には非常に奇妙に思えます。

4

4 に答える 4

2

Sageは、データベースに直接書き込むように設計していません(この場合、開発はサポートされていません)。

Sageには、オブジェクトを介してデータベースに書き込むことができるSDKがあります。これにより、為替レートや割引などをインポートするルーチンを作成するプロセスが簡素化されます。

SDKを入手するには、認定されたSage開発者である必要があり、これにはお金がかかります。

于 2012-09-25T12:43:36.253 に答える
0

理論 4 開発者は、経験の浅い「開発者」がデータベースにデータを書き込めないようにし、収入源を保護するためにデータベースとのやり取りをより困難にするために、意図的にレコードを挿入するロジックを難読化しようとしていました.. I彼らは自分たちが何をしていたかを正確に知っていたと思います

于 2014-02-11T14:51:50.227 に答える
0

Sage API は、10 のブロックで dbo.SYSCounter から増分値を取得することによって ID を管理します。どうやら、1 ずつ増分して取得するのは遅すぎると判断したようです。使用されていないカウンターは、終了時にダンプされます。SYSCounter を xx ミリオン前に安全にプッシュし、それらの ID をタスクに使用できます。

直接の SQL 編集はサポートされていません。ID を操作すると、監査証跡を見れば明らかです。SDK で文書化された API を使用することをお勧めします。詳細については、BP またはサードパーティの開発者と話してください。

于 2016-08-03T14:29:47.547 に答える
0

理論#1:

彼らは N0 に挿入し、将来の編集のために N1 ~ N9 を予約していますか?

理論 2:

親レコードに N0 を使用し、子レコード ID として N1 ~ N9 を使用していますか? 5 つのテーブルすべてが同じカウンターとメソッドを使用しているとおっしゃいましたが、そうではないようです。

N1-N9 が使用されている行はありますか?

理論 #1a & #2a:

彼らはこれらのいずれかを実装するつもりでしたが、気が変わったか、以前にこれを実装し、このモデルから離れましたが、コード/メソッドをクリーンアップしませんでした.

于 2012-05-07T21:05:55.983 に答える