Avatar billede kayb Nybegynder
14. december 2000 - 14:07 Der er 1 løsning

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.
Avatar billede kayb Nybegynder
14. december 2000 - 14:27 #1
Har fundet svaret.Ellers tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Udlændinge- og Integrationsministeriet

Jira og Confluence administrator til Koncern It

Djurslands Bank

IT-udvikler

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Kickstart din IT-karriere som IT-supporterelev på Flyvestation Aalborg

Netcompany A/S

Network Engineer