Próbuję utworzyć Trigger który uruchomi się po zaistnieniu w tabeli konkretnej sprzedaży. Trigger ma za zadanie skopiowanie numeru id(ID_DOK_MAGAZYNOWEGO) tejże sprzedaży oraz id produktów które brały udział w sprzedaży. - na chwilę obecną tylko tyle, dla mnie aż tyle :). Numer id sprzedaży i numer id produktu mają zostać przeniesione do bazy z historią sprzedaży.
Poniższy kod działa. Uruchamia się sam każdorazowo po utworzeniu nowej sprzedaży i kopiuje id sprzedaży (ID_DOK_MAGAZYNOWEGO) do bazy z historią sprzedaży.
ALTER trigger [dbo].[ID_INSERT]
on [dbo].[DOKUMENT_MAGAZYNOWY]
after insert
as
if exists
(
select * from inserted i
where i.ID_TYPU = 1 -- konkretny typ sprzedaży, tylko ten jeden rodzaj
)
begin
INSERT INTO id.dbo.historia(id_numer)
select ID_DOK_MAGAZYNOWEGO from inserted
end
Problem pojawia się gdy chcę dodać kolejną tabele ,żeby moja baza z historią zawierała więcej danych. Mianowicie chcę dodać tabelę który pokaże mi jakie produkty brały udział w sprzedaży. - tych danych nie ma w tabeli na której został założony trigger.
gdy modyfikuję trigger w poniższy sposób , przestaje on działać, nie dodają się nowe wiersze do mojej tabeli z historią sprzedaży tak jak to miało miejsce w pierwszym przypadku.
W tym przypadku nie działa .
ALTER trigger [dbo].[ID_INSERT]
on [dbo].[DOKUMENT_MAGAZYNOWY]
after insert
as
if exists
(
select * from inserted i
where i.ID_TYPU = 1 -- konkretny typ sprzedaży, tylko ten jeden rodzaj
)
begin
INSERT INTO id.dbo.historia(id_numer,id_artykulu)
select
inserted.ID_DOK_MAGAZYNOWEGO, -- numer sprzedaży
POZYCJA_DOKUMENTU_MAGAZYNOWEGO.ID_ARTYKULU -- id artykulu który się sprzedał
from inserted
inner join POZYCJA_DOKUMENTU_MAGAZYNOWEGO on
POZYCJA_DOKUMENTU_MAGAZYNOWEGO.ID_DOK_MAGAZYNOWEGO=inserted.ID_DOK_MAGAZYNOWEGO
end