Trigger virker ikke ordentligt?
Jeg har en trigger på en tabel der hedder STOCKTABLE i den er der en kolonne der hedder STOCKLOC.Den fyrer en trigger af når der bliver indsat en ny eller opdateret.Den må ikke overføre data når STOCKLOC = \'PBogklub\' men det gør den anyway.Her er triggern.
CREATE Trigger IndsetUBL_vare
On STOCKTABLE
For INSERT
As
DECLARE @Varenr_ISBN VARCHAR(13)
DECLARE @Conc_nr VARCHAR(50)
DECLARE @Navn_titel VARCHAR(150)
DECLARE @Forfatter VARCHAR(80)
DECLARE @Afdeling VARCHAR(1)
DECLARE @Varegruppe VARCHAR(50)
DECLARE @Vare integer
DECLARE @Pris float
DECLARE @Antal Integer
DECLARE @Afd Integer
DECLARE @Bid Integer
DECLARE @CheckReturn Integer
DECLARE @Aktiv Integer
DECLARE @LineDisc VARCHAR(5)
DECLARE @StudRab Integer
DECLARE @Dato Datetime
DECLARE @Dataset varchar(3)
SELECT @Dataset = DATASET, @Conc_nr = ITEMNUMBER, @Varenr_ISBN = ITEMNAME3UK, @Navn_titel = ITEMNAME, @Forfatter = ITEMNAME2UK,
@Afdeling = STOCKLOC, @Pris = UBL_VEJL_UDSALG, @Varegruppe = ITEMGROUP, @Aktiv = BLOCKED, @LineDisc = LINEDISC
FROM INSERTED
if @Dataset<>\'DAT\'
Return
if @Afdeling=\'PBogklub\'
Return
if @Afdeling=\'NBogklub\'
Return
Exec @CheckReturn = CheckISBN @ISBNNo = @Varenr_ISBN -- Check the ISBN number. Is it valid? Otherwise we won\'t insert the new stuff
If @CheckReturn = 0
Return
If @Navn_titel = \'\' Or @Navn_titel = NULL Or @Navn_titel = \'\' -- Gotta have a name. Otherwise we won\'t insert the new stuff
Return
If @Pris = 0 -- Gotta have a price. Otherwise we won\'t insert the new stuff
Return
If @Varegruppe <> \'Bøger\' And @Varegruppe <> \'Multimedia\' -- Gotta be a book or mmedia item. Otherwise we won\'t insert the new stuff
Return
if Left(@Afdeling,1)=\'P\'
Set @Afd = 3
Else
Set @Afd = 2
If @Varegruppe = \'Bøger\'
Set @Vare = 1
Else
Set @Vare = 2
SELECT @Antal = Sum(CAST(STOCKSUM.ENTEREDQTY AS Integer))
FROM STOCKSUM
WHERE STOCKSUM.ITEMNUMBER = @Conc_nr AND STOCKSUM.DATASET = \'DAT\'
If @Antal Is Null
Set @Antal = 0
If @LineDisc = \'11\' Or @LineDisc = \'12\'
Set @StudRab = 10
Else
Set @StudRab = 0
If @Aktiv = 0 -- Just inverting the value.
Set @Aktiv = 1
Set @Dato = GetDate()
INSERT INTO UBL_main.dbo.UBL_vare (UBL_main.dbo.UBL_vare.Varenr_isbn, UBL_main.dbo.UBL_vare.Navn_titel,
UBL_main.dbo.UBL_vare.lager, UBL_main.dbo.UBL_vare.LU_ubl_afd, UBL_main.dbo.UBL_vare.Pris,
UBL_main.dbo.UBL_vare.Conc_item_nr, UBL_main.dbo.UBL_vare.LU_vare_gruppe, UBL_main.dbo.UBL_vare.Aktiv,
UBL_main.dbo.UBL_vare.Studierabat, UBL_main.dbo.UBL_vare.Pub_klar, UBL_main.dbo.UBL_vare.Opret_dato, UBL_main.dbo.UBL_vare.Odatere_dato)
VALUES (@Varenr_ISBN, @Navn_titel, @Antal, @Afd, @Pris, @Conc_nr, @Vare, @Aktiv, @StudRab, 1, @Dato, @Dato)
SELECT @Bid = UBL_main.dbo.UBL_vare.ID
FROM UBL_main.dbo.UBL_vare
WHERE UBL_main.dbo.UBL_vare.Conc_item_nr=@Conc_nr
INSERT INTO UBL_main.dbo.Boeger_mmedie(UBL_main.dbo.Boeger_mmedie.Forfatter,UBL_main.dbo.Boeger_mmedie.LU_varenr_isbn)
VALUES( @Forfatter,@Bid)
If @Vare = 1
INSERT INTO UBL_main.dbo.Boeger(LU_varenr_isbn)
VALUES(@Bid)
Else
INSERT INTO UBL_main.dbo.Multimedie(LU_varenr_isbn)
VALUES(@Bid)
Håber i kan hjælpe.
