Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-05-10 23:38:16

  giegiel - Członek DUG

giegiel
Członek DUG
Skąd: Chrzypsko Wielkie/Poznań
Zarejestrowany: 2006-04-15

Trigger i sql

Musze zrobić projekt z Baz danych w T-sql (M$) i potrzebuję pomocy. W ogóle nie wiem czy to jest wykonalne ale to mi już powiecie.


Mianowicie mam tabele czasy

Kod:

create table czasy ( id_czasu int primary key,
                    id_tor int foreign key references tory(id_toru),
                    id_kier int foreign key references kierowcy(id_kierowcy),
                    czas time,
                    rekord int default 0);

i po dodaniu czasu chciałbym aby trigger sprawdzil czy nowy czas ma mniejszą wartość niż stary rekord i jeśli tak to przy starym rekordzie wstawił rekord=0 a w nowym rekord=1. W ogóle nie wiem jak się za to zabrać i czy to wykonalne HELP

Jak nie trigger to jakaś procedura? Coś?

Offline

 

#2  2010-05-11 03:34:18

  czadman - Bicycle repairman

czadman
Bicycle repairman
Skąd: Wrocław
Zarejestrowany: 2005-07-08

Re: Trigger i sql

Jest wykonalne, przy pomocy triggerów właśnie.
http://msdn.microsoft.com/en-us/library/ms189799.aspx - tutaj znajdziesz wystarczająco dużo informacji aby osiągnąć to co chcesz.
Życzę miłego studiowania tematu :)


http://www.debian.org/logos/openlogo-nd-50.png

Offline

 

#3  2010-05-11 21:59:50

  giegiel - Członek DUG

giegiel
Członek DUG
Skąd: Chrzypsko Wielkie/Poznań
Zarejestrowany: 2006-04-15

Re: Trigger i sql

Pomyślałem.... Pokombinowałem.... wieeele wody upłynęło :) i wyszło coś takiego:

Kod:

create trigger DodajCzas
on czasy
for insert
as
    declare @tor int
    select @tor = (select id_tor from inserted)
    declare @stary time
    select @stary = (select czas from czasy where rekord = 1 and id_tor = @tor)
    declare @nowy time
    select @nowy = (select czas from inserted)
    if (@stary < @nowy)
    begin
        update czas.rekord set czas.rekord = 0 where rekord = 1
        update czas.rekord set czas.rekord = 1 from inserted
        print 'Czas jest nowym rekordem!'
    end
    else
    begin
        print 'Czas nie jest rekordem.'
    end

i za każdym razem wyrzuca 'Czas nie jest rekordem' czyli nie działa porównywanie ale co jest nie tak?

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)