Присоединяется внутри триггера? - PullRequest
0 голосов
/ 08 марта 2011

Я пытаюсь создать триггер, который обновит таблицу истории с информацией о получении.

Моя исходная таблица имеет SourceID и ReceiptID.

Поэтому, когда я обновляю таблицу квитанций,я хочу скопировать эту запись в таблицу истории, но сначала мне нужно получить SourceID обновляемого источника.

это то, что у меня сейчас:

ALTER TRIGGER [dbo].[trg_ReceiptHistory] 
ON [dbo].[tblReceipt]
for UPDATE
AS 
begin try
INSERT INTO tblHistorySource(RecShipName, RecShipAddress, sourceID)
select t1.shippingName, t1.shippingAddress, t2.sourceID
from [DELETED] t1, tblSource t2
where t2.receiptID = t1.receiptID
end try
begin catch
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
RAISERROR('Error in Source Hisotry Trigger' ,16,1)
ROLLBACK TRAN
END CATCH

когдая пытаюсь сделать простое обновление tblReceipt, я получаю следующую ошибку:

Msg 50000, Level 16, State 1, Procedure trg_ReceiptHistory, Line 24
Error in Source Hisotry Trigger
Msg 3609, Level 16, State 1, Line 1
The transaction ended in the trigger. The batch has been aborted.

Я делаю это неправильно?пожалуйста, помогите: (

1 Ответ

2 голосов
/ 09 марта 2011

Первое, что нужно сделать, это удалить CATCH, чтобы увидеть ошибку.Мы можем пойти оттуда.

ALTER TRIGGER [dbo].[trg_ReceiptHistory] 
ON [dbo].[tblReceipt]
for UPDATE
AS 
--begin try
INSERT INTO tblHistorySource(RecShipName, RecShipAddress, sourceID)
select t1.shippingName, t1.shippingAddress, t2.sourceID
from [DELETED] t1, tblSource t2
where t2.receiptID = t1.receiptID
/*end try
begin catch
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
RAISERROR('Error in Source Hisotry Trigger' ,16,1)
ROLLBACK TRAN
END CATCH*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...