2009-05-29 18 views
1

MSSQLの代わりに挿入トリガーのスケルトンボディを教えてもらえますか?私は購入注文列(整数)で最大の値をテストしようとしていますが、挿入すると最大値が1ずつ増加し、購入注文IDとして挿入されます。列はAuto Incrementオプションで設定されていなかったので、私はTriggerを使ってそれを回避しています。代わりにトリガーを挿入

ありがとうございました。

答えて

6

ID列を含むように表を変更する方法は次のとおりです。

  1. 同じ構造で、購買発注IDにID列を持つ新しいテーブルを作成します。あなたは「として、スクリプトテーブル」を使用し、同じように、発注書IDの行を変更することができます

    [発注同上] int型のアイデンティティの主キー、新しいテーブルの上のアイデンティティの挿入時に

  2. 入れます:

    SET IDENTITY INSERT NEWTABLEデータオーバー

  3. コピーON:

    INSERT INTO NEWTABLE(列)SELECT * FROM CurrentTable

  4. ターンアイデンティティはオフに挿入しない:

    SET IDENTITY INSERT NEWTABLE OFF

  5. の名前を変更(またはドロップ)古いテーブルをそれはもはや使用されるように:

    EXEC sp_renameを 'CurrentTableを'、 'BackupTable' ;

  6. は、新しいテーブルを移動

    EXEC sp_renameを 'NEWTABLE'、 'C​​urrentTable';

これで、厄介なトリガーよりもはるかに優れた識別カラムが得られました。

+1

または代わりに、あなたは非常に似SQLを放出するSSMSでGUI ...を使用することができます... –

0

Andomarが説明したように、特定の要件を適切にサポートするための新しいテーブルを作成することは、私の見解では理想的な行動コースです。

しかし、代わりに挿入トリガールートを使用する必要がある場合は、次のマイクロソフトの参考資料が詳細な例を示しています。

http://msdn.microsoft.com/en-us/library/ms175089.aspx

関連する問題