Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa trigerima - Transact SQL

[es] :: MS SQL :: Problem sa trigerima - Transact SQL

[ Pregleda: 2521 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

valevale

Član broj: 170698
Poruke: 2
79.101.180.*



Profil

icon Problem sa trigerima - Transact SQL26.01.2008. u 01:15 - pre 197 meseci
Napisao sam kod u transact SQL-u koji treba da kada se u tabelu "ispiti" ubaci zapis inkrementira broj polozenih ispita (br_polozeno) za tog studenta u tabeli "studenti".

CREATE TRIGGER Broj_polozenih_ispita
ON ispiti
FOR INSERT
AS
BEGIN
UPDATE studenti
SET br_polozeno = br_polozeno +1
FROM studenti
INNER JOIN ispiti
ON studenti.studentID = ispiti.studentID
END
GO

Problem je sto ovaj kod uvecava br_polozeno za sve kolone a ne samo za studenta za kog je unesen zapis.
Teorijski, to bi trebalo da bude reseno zadnjim redom (ON studenti.studentID = ispiti.studentID), ali imam osecaj da mi nesto u kodu fali.

Unapred hvala na odgovoru.
 
Odgovor na temu

M E N E
borislav
Temerin

Član broj: 30434
Poruke: 231
*.nspoint.net.



+1 Profil

icon Re: Problem sa trigerima - Transact SQL26.01.2008. u 07:48 - pre 197 meseci
U trigeru imas direktan pristup Tabelama INSERTED i DELETED, koje sadrze identicne kolone kao i tabela na koju vezes triger
Trebalo bi da komuniciras sa njima.
U tvom slucaju u tabeli insterted (identicna tabeli ISPITI) se nalazi tacno jedan novi red, jer si uneo jedan novi polozeni ispit. Iz te tabele cupas
StudentID

npr. ovo bi trebalo da radi:
CREATE TRIGGER Broj_polozenih_ispita
ON ispiti
FOR INSERT
AS
BEGIN
UPDATE studenti
SET br_polozeno = br_polozeno +1
WHERE studentID=(select top 1 studentID from INSERTED) --novi red, umesto tvog JOINa
END
GO


Uhvatili ste me nespremnog
 
Odgovor na temu

valevale

Član broj: 170698
Poruke: 2
79.101.180.*



Profil

icon Re: Problem sa trigerima - Transact SQL26.01.2008. u 16:38 - pre 197 meseci
Hvala na odgovoru, problem resen.

Nadam se da ce ovo pomoci jos nekom.

Meni ce sigurno koristiti u buducnosti.
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Problem sa trigerima - Transact SQL28.01.2008. u 21:37 - pre 197 meseci
Lepo je sto smo iz posta naucili kako se koriste inserted i deleted tabele u trigerima. Medjutim, u konkretnom primeru triger uopste nije potreban. Broj polozenih ispita za svakog studenta se u svakom momentu moze dobiti iz tabele Ispiti, jednostavnim kverijem

SELECT
Student
, COUNT(*)
FROM Ispiti
GROUP BY Student

 
Odgovor na temu

[es] :: MS SQL :: Problem sa trigerima - Transact SQL

[ Pregleda: 2521 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.