sql >> データベース >  >> RDS >> Sqlserver

トリガーでループ?

    最初の問題は、レコード セットをループすることを最初の選択肢として考えるべきではないということです。ここにあるので、ほとんどの場合、間違った選択です。あなたの次の問題は、トリガーが一度に 1 つずつではなく、レコードのセット全体を処理することです。あなたの説明から、一度に 1 つのレコードを処理すると仮定して書いたに違いありません。セットベースのプロセスが必要です。

    おそらく、国テーブルにまだないすべての国を挿入するトリガーで次のようなものが必要になるでしょう (これは、country_Id が整数の ID 列であると想定しています):

    Insert country (country_name)
    select country_name 
    from inserted i
    where not exists 
      (select * from country c 
       where c.country_name = i.country_name)
    

    トリガーの代わりにストアド プロシージャを使用して、ステージング テーブルから実際のテーブルに挿入することもできます。



    1. 2つのリストを比較するSQL(oracle)

    2. Postgresqlを使用するDjango、列はGROUP BY句に表示されるか、集計関数で使用される必要があります

    3. 複数の値に一致するレコードのグループを検索します

    4. ストアドプロシージャを使用してMACアドレスを取得することは可能ですか?