1

列の更新時にトリガーを作成し、他のテーブルに行を挿入しようとしています。データは複数の結合を持つからのものでありSELECT、複数のテーブルに挿入する必要があります。

私の質問は、挿入する前に値を変数に挿入するのがベストプラクティスですか?私はこれまでこのようなトリガーを作成したことがありません。

CREATE TRIGGER ship_trigger ON dbo.Orders
FOR UPDATE
AS
SET NOCOUNT ON
IF ( UPDATE(OrderStatusId) AND OrderStatusId == 1)
BEGIN

SELECT
FROM
JOIN
JOIN
WHERE

他のテーブルにデータを挿入する最も効率的な方法を理解しようとしています

ありがとう!

4

1 に答える 1

4

SQL Server を想定すると (構文はそう示唆しています)、最初に値を変数に挿入することはベスト プラクティスではありません。そして、実際にそれを行う唯一の方法はテーブル変数を使用するか、1 行だけを更新する場合です。トリガーは、 の影響を受けたすべての行に対して 1 回実行されUPDATE、それらの行はINSERTED疑似テーブルで使用できるためです。 . したがって、トリガーは次のようになります。

CREATE TRIGGER ship_trigger ON dbo.Orders
FOR UPDATE
AS
SET NOCOUNT ON

IF ( UPDATE(OrderStatusId) AND OrderStatusId = 1)
BEGIN

    INSERT INTO SomeTable(Col1, Col2)
    SELECT Col1, Col2
    FROM INSERTED

END
于 2013-01-29T19:09:38.027 に答える