2016-04-04 7 views
0

私は比較的新しいSQLで、疑問があります。私はフィールドID、名前、住所、supplier_refなどのメーカーテーブルを持っています 私がやっていることは、ウェブサイト(メーカーデータ)からのデータを削っているので、掻き集めた後、私は擦り切れたデータを持つXMLファイルになります:SQL Server:参照列を生成する方法

<ID>2123</ID> 
<name>Name</name> 
<address>21 Tithebarn st</address> 
<supplier_ref>AX5145</supplier_ref> 

メーカーの中にsupplier_refがないと、生成されるXMLファイルのsupplier_refフィールドが空になるという問題があります。 私は1つを生成する必要があり、どのように、またはいつ、どこで、私は知らない。 supplier_refはVARCHARなので、自動インクリメントすることはできません...

アイデア?前もって感謝します。

+0

申し訳ありませんが、より良い説明ができますか? ID、名前、住所、sup_ref:今、あなたは何をしたいのですか? DBに保存しますか? stored_procedureは何を使用していますか? C#スクリプト? – alessalessio

+0

はい、私はストアドプロシージャを使用しています。まず、私はFeedProcessorSystemを使用して、擦ったデータをXMLファイルにロードします。このフィードプロセッサシステムは、XMLのデータをTempDealerという名前の一時テーブル(DB)に保存するストアドプロシージャを呼び出します。次に、TempDealerからDealershipテーブルにインポートする必要があります。それから、問題が起こる...私はsupplier_refを持っていないものをインポートすることはできません。私は1つを生成する必要があります...そして、それはVARCHARでなければなりません – Tofetopo

答えて

1

有効なサプライヤリファレンスを構成するものが分からないと、言うことは難しいです。適切な長さのvarcharを生成するのは難しいことではなく、ダウンストリームの検証に合格し、データの他の場所で正当な値との衝突を引き起こさないものを生成しています。

書籍のISBNコードを扱っていた場合(これまでに一番近いものとして)、「個人ISBN」のための予約スペースがあります(実際の用語を思い出すことはできません) 。あなたは、出版社からの実際の本の後ろに決して届かないことを自信を持って望みどおりに割り当てることができます。

これは、ここで検索する必要があります。 'XX'参照空間が予約されている可能性があります。この場合、 'XX0001'、 'XX0002'などを安全に作成することができます。経験から、IDフィールドだけを含むカウントテーブルを使用すると思います。次に、定数と組み合わせて、あなたが望む出力値を与えることができますが、それを行うにはいくつかの方法があります。

が実際にの作業を参照する方法を確認します。これはあまりにも複雑ではありません。難しいのは、ビジネスルールを特定することです。

+0

"私はこの参照を自分で作成しました"別の欄に記入してください。次に、あなた自身が生成しているシンプルなシーケンスを使用し、「この参照を自分で作成しました」列に注意を払うキーとコードを使用します。複合ユニークキーに含めます。これは、有効なサプライヤのフォーマットが何を参照しているかにかかわらず、いかなる衝突も避けることが保証されています。 –

+0

@MattGibsonはい、supplier_ref仕様で定義された(または安全に推論可能な)私的名前空間がない場合は、それを避けることができます。読み取りロジックはかなり複雑になり、複数の場所で複製する必要があり、見つけにくいバグの可能性があります。 – eftpotrm

+0

supplier_refsは製造元によって異なります。例:BMW: 08724 VAUXHALL GBN8B1そして4桁の整数を使用する傾向があるものがいくつかあります...そして、supplier_refを持たない残りのディーラーがあります – Tofetopo

関連する問題