0

以下に示すようなトリガーがあります。

ALTER TRIGGER [dbo].[areftblSalesDoc] ON [dbo].[tblSalesDoc]
AFTER INSERT
AS
Begin Try
    INSERT INTO ArefSms
        (DSIDName, SalesID, CustName, CustCellPhone, Fish, qt, ProdName)
    SELECT
        td.DSName, i.SalesID, tc.CustName, tc.CustCellPhone, i.Fish, NULL, NULL
        FROM inserted i
        left join tblDistributionStationDesc td on i.DSID = td.DSID
        left join tblCustomerDesc tc on i.CustomerID = tc.CustID

End Try
Begin Catch

End catch

トリガーが何も保存tblsalesdocできず、エラーがある場合も保存できません。しかし、私はそれを望んでいません。

私に何ができる?

4

1 に答える 1

0

エラーが発生した場合にトリガーコードをスキップしたい場合は、SAVE TRANSACTIONステートメントを使用してみることができます

ALTER TRIGGER [dbo].[areftblSalesDoc] ON [dbo].[tblSalesDoc]
AFTER INSERT
AS

SAVE TRANSACTION BeforeInsertInTrigger;

Begin Try
    INSERT INTO ArefSms
        (DSIDName, SalesID, CustName, CustCellPhone, Fish, qt, ProdName)
    SELECT
        td.DSName, i.SalesID, tc.CustName, tc.CustCellPhone, i.Fish, NULL, NULL
        FROM inserted i
        left join tblDistributionStationDesc td on i.DSID = td.DSID
        left join tblCustomerDesc tc on i.CustomerID = tc.CustID

End Try
Begin Catch
   ROLLBACK TRANSACTION BeforeInsertInTrigger;
   RETURN
End catch
于 2013-07-16T05:58:34.287 に答える