
Mianowicie posiadam Tabele z danymi:
data - datetime
kod - int
duplikat - int
Problem jest taki żeby trigger po wprowadzaniu nowego rekordu ustawiał w nim duplikat = 1 gdy w przeciągu ostatnich 24h pojawił się już dany kod.
napisałem coś takiego:
create trigger dbo.duplikaty
on dbo.glowna
after insert
AS
/*deklaracja zmiennych
@kod - wprowadzany kod
@data - wprowadzana data
@data1 - wprowadzana data minus 1 dzien
*/
declare @kod int, @data datetime, @data1 datetime
select @kod=inserted.kod from inserted
select @data=inserted.data from inserted
set @data1=dateadd(d, -1, @data)
/* wyszukanie duplikatow kodu dla zakresu 24h wstecz
*/
update dbo.glowna
set duplikat = 1
where @kod=kod
and Data BETWEEN CONVERT(DATETIME, @data1, 102) AND CONVERT(DATETIME, @data, 102)
Niestety ten trigger nie działa tak jakbym chciał mianowicie jako ze duplikat zmieniany jest po wprowadzeniu danych pierwszy rekord automatycznie jest duplikatem a tego nie chce i druga sprawa trigger stosuje sie do wszystkich danych na danym przedziale a nie tylko do nowo dodanego rekordu.
Problem muszę jakoś rozwiązać nie musi to być trigger może źle się za to zabrałem? Pozdrawiam i z góry dziękuje za pomoc