テーブルT1でレコードが挿入または更新されたときに、これをテーブルT2にミラーリングするトリガーを作成しました(いくつかの条件に従います)。
T1 の最初のステートメント (挿入) では、トリガーがうまく機能します (T1 のすべてを T2 にコピーします)。ただし、最初のトリガーの後、トリガーは実行されなくなります (Insert または Update 句を使用)。
コード:
ALTER TRIGGER [dbo].[Replicacao]
ON [dbo].[ImportacaoXML]
AFTER UPDATE, INSERT
AS
BEGIN
IF EXISTS (SELECT ProgramacaoBarcas.ViagemID, ProgramacaoBarcas.Data
FROM ProgramacaoBarcas, inserted
WHERE ProgramacaoBarcas.ViagemID = inserted.ViagemID
AND ProgramacaoBarcas.Data = inserted.Data)
BEGIN
UPDATE ProgramacaoBarcas
SET ViagemID = inserted.ViagemID, Data = inserted.Data,
Extra = inserted.Extra, Modalidade = inserted.Modalidade,
FleetID = inserted.FleetID, Partida = inserted.Partida,
Chegada = inserted.Chegada, Capacidade = inserted.Capacidade,
LocationID = inserted.LocationID, DestinoID = inserted.DestinoID,
CodLinha = inserted.CodLinha
FROM inserted
WHERE ProgramacaoBarcas.ViagemID = inserted.ViagemID
AND ProgramacaoBarcas.Data = inserted.Data
AND ProgramacaoBarcas.Bloqueada = 0
END
ELSE
BEGIN
INSERT INTO ProgramacaoBarcas (ViagemID, Data, Extra, Modalidade, FleetID, Partida, Chegada, Capacidade, LocationID, DestinoID, CodLinha, Bloqueada)
SELECT
ViagemID, Data, Extra, Modalidade, FleetID, Partida, Chegada,
Capacidade, LocationID, DestinoID, CodLinha, 0
FROM inserted
END
END
誰にも手がかりがありますか?ログを検索しましたが、何も見つかりませんでした。トリガーをデバッグする方法はありますか?
(初心者ですので、しばらくお待ちください)
Obs:解決策を見つけました。コードは正しいです。