Logging rows that are deleted in a table sql server -
i have made topic before, think have not been clear, going try explain in detail possibly can.
i have table called list, has 32000 rows, 2000 each year(1999-2014) has columns: songid,top2000year,position,
what has happen:
if deletes example year 2000, 2000 songs of year 2000 deleted, theres no problem that
delete list top2000year = 2000
but, problem facing is: need logged, created log table called logtable columns: title,artist,year,position title song title, year year song came out , position position in list
those different table, join them this
select title, name[artist],song.year[songyear], position list left join song on song.songid = list.songid left join artist on artist.artistid = song.artistid top2000year = 2013 order position asc
this shows query http://puu.sh/i8f2u/8702ee7010.png (censored server, it's teachers figured i'd censor it)
i trying fill logtable that, if year 2013 deleted, 2000 rows should inserted logtable using trigger
edit: used https://dbalink.wordpress.com/2008/06/20/how-to-sql-server-trigger-101/ , worked, tried database, , didn't work.
code:
use [top2000database] go set ansi_nulls on go set quoted_identifier on go alter trigger [dbo].[trgdeletelist] on list delete insert list (songid,top2000year,position) select songid,top2000year,position inserted insert [dbo].[logtabel] (title,artist,year,position) select title,artist,year,position deleted
just create trigger
on table delete
action:
create trigger triggername on list delete insert logtable (title, artist, year, position) select s.title, a.name, s.year, s.position deleted d left join song s on s.songid = d.songid left join artist on a.artistid = s.artistid go
you need join on deleted
virtual table deleted rows.
Comments
Post a Comment