für das Thema habe ich mir eine kleine Lösung zusamengestellt. Ist wahrscheinlich nicht die Eleganteste, aber bei uns funktioniert sie. Vielleicht kann es ja sonst noch jemand gebrauchen... natürlich auf eigenes Risiko
Code:
USE [****300]
GO
/****** Temporäre Tabelle für alte und neue Artikelnummer ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[USER_TempArtNrEAN](
[ArtikelNrAlt] [varchar](20) NOT NULL,
[ArtikelNrNeu] [varchar](20) NOT NULL,
[Einheit] [smallint] NOT NULL,
[Farbe] [smallint] NOT NULL,
[Grösse] [varchar](4) NOT NULL,
[Typ] [varchar](1) NULL,
[DruckEAN] [smallint] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Trigger für Artikellagerkarte. Kopiert alte und neue Artikelnummer in die USER_TempArtNrEAN******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE Trigger [dbo].[USER_Temp_Artnr_EAN] ON [dbo].[ArtikelLagerkarte] FOR UPDATE AS
SET NOCOUNT ON
IF (UPDATE([Modul]) AND (SELECT COUNT(*) FROM inserted WHERE [Modul] IS NOT NULL)>0)
BEGIN
IF (SELECT COUNT(*) FROM inserted Where (left([modul],1)='(' and substring([modul],(Len(inserted.ArtikelNr)+2),2)='):'))>'0'
BEGIN
delete from USER_TempArtnrEAN
insert into dbo.USER_TempArtnrEAN (ArtikelNrAlt, ArtikelNrNeu, Einheit, Farbe, Grösse, Typ, DruckEAN)
select distinct d.ArtikelNr, i.ArtikelNr , h.Einheit ,h.Farbe, h.Grösse,NULL as Typ,'0' as DruckEAN
from deleted d inner join handelsartikel h
on d.ArtikelNr =h.ArtikelNr
inner join ArtikelFilialBestand afb on afb.Artikelnr=d.Artikelnr
cross join inserted i
--where afb.filialnummer=0 and afb.bestand>0 /****** Auskommentiern, wenn nur bei Artikeln mit Bestand ******/
END
END
GO
/****** Trigger fügt alte ArtNr als EAN ein, wenn Artikel gelöscht wird ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE Trigger [dbo].[USER_TempArtnrEAN_Delete] ON [dbo].[Artikel] FOR DELETE AS
IF (SELECT COUNT(*) FROM USER_tempArtnrEAN)=1
begin
Insert into ean (ArtikelNr, Einheit, Farbe, Grösse, EAN, Typ, DruckEAN)
Select ArtikelNrNeu, Einheit,Farbe,Grösse,ArtikelNrAlt,Typ,DruckEAN
From USER_tempArtnrEAN t
inner join deleted d on t.ArtikelNrAlt =d.ArtikelNr
end
GO