1

私はこのトリガーを持っています

CREATE TRIGGER TriggerPickup
    ON dbo.Pickup
    AFTER INSERT 
    AS BEGIN
INSERT INTO dbo.Pickup( PickupProxy,PickupHispanic,EthnCode,CategCode,AgencyID)
         SELECT
              Clients.ClientProxy, Clients.Hispanic, Clients.EthnCode, Clients.CategCode,Clients.AgencyID
         FROM
             dbo.Clients,Pickup
             where   Pickup.ClientID =Clients.ClientID
    END 

ただし、このような挿入ステートメントを送信するとします。クライアントテーブルからデータをプルして、IDと日付を挿入するのと同じ行に挿入することになっていますが、新しいレコードを作成してデータを挿入します。

INSERT INTO Pickup (ClientID, PickupDate)
VALUES (13144, '2010-11-20');

クライアントテーブルからデータをコピーするのではなく、空の行を挿入するだけ ピックアップから*を選択する方法は次のようになります です。

4

1 に答える 1

1

UPDATEステートメントでINSTEADOFINSERTトリガーまたはAFTERトリガーを使用する必要があります

CREATE TRIGGER TriggerPickup ON dbo.Pickup
INSTEAD OF INSERT
AS BEGIN
  INSERT dbo.Pickup( PickupDate,
                    PickupProxy, PickupHispanic, EthnCode, CategCode, AgencyID)
  SELECT i.PickupDate, 
         c.ClientProxy, c.Hispanic, c.EthnCode, c.CategCode, c.AgencyID
  FROM dbo.Clients c JOIN inserted i ON i.ClientID = c.ClientID
END    

トリガー後

CREATE TRIGGER TriggerPickup ON dbo.Pickup
FOR INSERT
AS BEGIN
  UPDATE p
  SET p.PickupProxy = c.ClientProxy,
      p.PickupHispanic = c.PickupHispanic,
      p.EthnCode = c.EthnCode,
      p.CategCode = c.CategCode,
      p.AgencyID = c.AgencyID
  FROM inserted i JOIN dbo.Clients c ON i.ClientID = c.ClientID
                  JOIN dbo.Pickup p ON i.PickupID = p.PickupID
END   
于 2013-02-20T19:42:59.600 に答える