Evo jos malo pomoci nemam vremena da ti odradim sve. Kod je iz glave, mozda ima gresaka.
Napravis proceduru kojoj ces proslediti ime tabele. Unutar procedure imas nesto ovako.
Code:
DECLARE
@column nvarchar(256),
@columns nvarchar(2000)
SET @columns = ''
DECLARE C CURSOR FOR
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'PROSLEDJENA TABELA'
AND DATA_TYPE <> 'image'
OPEN C
FETCH NEXT FROM C INTO @column
WHILE @@FETCH_STATUS = 0
BEGIN
SET @columns = @columns + ', ' + @column
FETCH NEXT FROM C INTO @column
END
CLOSE C
DEALLOCATE C
Na taj nacin si izvukao imena svih kolona koja nisu tipa image iz konkretne tabele.
Sada te nista ne sprecava da iskucas triger koji inace pravis za jednu tabelu na ovaj nacin
Code:
@ssql = ' skript za triger s tim sto koristis promenljivu @columns za kolone i naravno prosledjenu tabelu'
sa
EXEC sp_executesql @ssql
izvrsis skript i eto trigera
Poslednja stvar koja ti ostaje je opet kursor za sve tabele
Code:
DECLARE
@tb_name nvarchar(256)
DECLARE CX CURSOR FOR
/*Ovako uzimas sve tabele iz baze*/
SELECT name FROM sysobjects WHERE type= 'U'
OPEN CX
FETCH NEXT FROM CX INTO @tb_name
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ime_procedure_koju_si_napravio @tb_name
FETCH NEXT FROM CX INTO @tb_name
END
CLOSE CX
DEALLOCATE CX
Ovo ti je sustina price, razradi malo ideju i bice ti lakse.
Nista te ne sprecava da odradis i prvo DROP pa CREATE trigera.
Na taj nacin mozes nesto i da izmenis, doradis i za minut dva imas prepravljene trigere na svim tabelama.
Zamisli da moras rucno da menjas trigere za 300 tabela koje si pre toga rucno pisao.