2017-07-16 8 views
1

Webフォームからデータを記録してそれをテーブルに挿入する挿入があります。私はすべてのフィールドのデータ型はvarchar型nullフィールドを読み込んで文字列値で更新するSQL関数

で、前のインサートを読み取り、すべての nullフィールドを検索し、 --

の文字列とそのレコードのnullフィールドを更新し、すぐに私の挿入後に更新を実行したいのですが

私は100以上のフィールドでそれぞれ20以上のフォームを持っていますので、特に、更新ステートメントの各フィールドを列挙したり書き出したりせずに、nullの値を持つフィールドを読み書きするには十分スマートな関数を探しています。これはあまりにも長くかかるでしょう。

は、誰もが方法を知ってい

は、フィールドが null値を持っているだけで読んで、あなたがあなたの既存のコードを変更することができない場合は、私の場合 --

+1

挿入後に更新する代わりに、テーブル構造を変更してみてください。列のデフォルト値を '--'に設定します。挿入中に値が与えられない場合、 '--'が自動的に挿入されます。 – Varun

+0

あなたはヌルをたくない場合は、なぜあなたは、挿入時にवरुण@ – TheGameiswar

+0

は、SQL Management Studioを通じ設定することができ、この何かであることの変更カント? – UserSN

答えて

1

代わりの更新となるだろうしている場合節では、パフォーマンス

のために良いではありません。

カラムのデフォルト値を - に設定します。挿入中に値が指定されていない場合、 - が自動的に挿入されます。

2

に、文字列にnullをされている任意のフィールドを更新するために、私は行くだろう挿入トリガーで...ので、すべての挿入した後、あなたがチェックし、null値を参照し、上記のアプローチの問題は、あなたがすべて挿入rows..Iを考え確認する必要がありますされ

create trigger triggername 
on table 
after insert 
as 
begin 

    update t 
    set t.col1=isnull(i.col1,'--'), 
     t.col2=isnull(i.col2,'--') 
    rest of cols 
    from table t 
     join 
     inserted i 
    on i.matchingcol=t.mtachingcol 
    end 

下のようにそれらを更新することができます多くの列を多くのフィルターでフィルタリングしているので、このアプローチのみを使用してください。単に表示目的のために、私はあなたがテーブル構造を変更しようとするかもしれ挿入した後、ビュー

+0

は、私はちょうどそれが最速の方法のようですが、私が同じことを行うためにトリガーを使用することができます知って良いことだので、列がnullのときに、デフォルトの属性値を得ることを発見しました。これで唯一のダウン秋、私は上記のコードで最速の方法を見つけようとために私の理由だった100の+ X 20 +性能指標をすべての私のコラムを列挙しなければならないです。 – UserSN

+1

ありがとう、お返事ありがとうございました – TheGameiswar

関連する問題