2016-09-05 24 views
1

データをインポートした後にトリガーを実行する方法MYTABLEインポート後にトリガーを実行する方法は?

CREATE TRIGGER trigger_class_id 
ON MYTABLE 
AFTER INSERT 
AS 
    UPDATE MYTABLE 
    SET CLASS_ID = SUBSTRING(CLASS_NAME, 1, 4) 

私はこのトリガーでインポートを試してみましたが、私のCLASS_IDCLASS_NAME

から4最初の文字に置き換えされていません。しかし、私はinsert into ...を使用している場合、それが働いている(私のトリガーが実行される)

+0

'CLASS_ID'フィールドは常にの最初の4つの文字を保持する必要があります'CLASS_NAME'またはそれは後で変更されますか?それが常にそれらの文字である場合は、代わりに計算列を使用できます。 – BeanFrog

+0

インポートはどういう意味ですか?このトリガは、行がmytableに挿入されたときにあなたの質問に答えるためにいつも起動します。このトリガを実行するために必要なことはmytableに行を挿入することです。 – GuidoG

答えて

2

一括インポート操作では、複数の行挿入をサポートするINSERTトリガーとINSTEAD OFトリガーを持つ表に対してのみトリガーを実行する必要があります。このLink

のインポートのためBCPコマンドを使用している場合は、明示的修飾子に-h「FIRE_TRIGGERS」を使用してトリガーを呼び出すことができます

読むよりは直接的なオプションはありませんインポートエクスポートウィザードで1つの方法は、インポートエクスポートウィザードで作成したパッケージを保存し、packaeを編集して、「詳細エディタ」に移動し、「FastLoadOptions」に移動し、「FIRE_TRIGGERS」フラグをtrueに設定することです。

あなたはデータ列をエクセル場合は頻繁に変わる、より良いオプションは、-h「FIRE_TRIGGERS」修飾子でBCPコマンドを使用して行くことです

+0

@unnikrishnanに感謝します-h "FIRE_TRIGGERS"の適用方法? 私はトリガクエリにそれを投げてみましたが、動作していません 申し訳ありませんが、私はhttps://technet.microsoft.com/en-us/library/ms187640(v=sql.105)のartikelで理解できません。 aspx ありがとう... – gufran

+0

SQL Serverのインポートとエクスポートウィザードでデータをインポートするときに、-h "FIRE_TRIGGERS"を使用できますか? – gufran

+0

あなたに感謝のソリューションが、私はまだFIRE_TRIGGERSの使用方法を理解していません。 'packaeは見つかりません - >高度なエディタに行きます - >" FastLoadOptions "に行きます - > FIRE_TRIGGERSフラグをtrueに設定します。' – gufran

0

あなたは可能性があります挿入された行のデータを使用したい。

だからあなたのクエリが


更新 MYTABLE SET CLASS_ID = SUBSTRING私は挿入から(4 i.CLASS_NAME、1、)のようになります。


これが役立ちます。 :)

+0

私は新しいデータ(Excelからのインポート) CLASS_IDをclass_nameの4文字に置き換えてください – gufran

関連する問題