begin process at 2012 05 26 11:43:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Débutant(s)

 > 

besoin d'aide pour un trigger


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

besoin d'aide pour un trigger

lundi 7 juin 2010 à 15:12:12 | besoin d'aide pour un trigger

marcolo21

Bonjour tous le monde,

j'aurai besoin d'aide pour un trigger. Ce trigger a pour but de noté les modifications faite dans un table dans un autre table. C'est donc un trigger d'audit d'une table.

Chaque fois que quelqu'un modifie une table, le trigger note dans la table audit (qui est identique a l'autre table) l'utilisateur qui a modifier ou ajouter quelque chose dans la table et elle note quelle colonne a été modifier.

voila le code que j'ai de fait:

Code :
ALTER TRIGGER Trigger4
ON dbo.test_table1
AFTER INSERT, UPDATE, DELETE
AS 
BEGIN


DECLARE @FldsUpdated AS varCHAR(2000)

DECLARE @ColumnsUpdated VARBINARY(100)
SET @ColumnsUpdated = COLUMNS_UPDATED()

DECLARE @columnName AS varCHAR(255)
DECLARE @tableName AS varCHAR(255)
DECLARE @tableSchema AS varCHAR(255)
DECLARE @hasChanged AS INT
Declare @Totalstring as varchar(1000)

DECLARE curTableColumns CURSOR FOR
               SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
                                FROM INFORMATION_SCHEMA.COLUMNS
                               WHERE TABLE_NAME = 'test_table1'

set @totalstring = ''
set @FldsUpdated = ''
OPEN curTableColumns
FETCH NEXT FROM curTableColumns INTO @tableSchema, @tableName, @columnName


WHILE @@FETCH_STATUS = 0 
BEGIN
               SELECT @hasChanged = master.dbo.SYSTEM_IsBitSetInBitmask
                                (
                                @ColumnsUpdated,
                        (select colid 
                        from syscolumns 
                        where id = OBJECT_ID('dbo.test_table1')
                        and name = @columnName)
                               
                                )
               
            
         
            IF @hasChanged <> 0 
                  begin
                  
                     SET @FldsUpdated = @columnName
                  
                  set @totalstring = @totalstring + @FldsUpdated + ','
                      
            end
           FETCH NEXT FROM curTableColumns INTO @tableSchema, @tableName, @columnName
END
CLOSE curTableColumns
DEALLOCATE curTableColumns



insert into test_table2
(value1,value2,value3,columnsUpdated)
SELECT value1, value2, value3, @totalstring
FROM INSERTED
End





--Fonction master.dbo.SYSTEM_IsBitSetInBitmask



SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

ALTER  function SYSTEM_IsBitSetInBitmask  
(@bitmask varbinary(500), @colid int)  
    returns int  
as  

begin  
    declare @word smallint  
    declare @bit  smallint  
    declare @mask binary(2)  
    declare @mval int  
    declare @oldword binary(2)    
  
    if @colid < 1 return 0  
  
    SELECT @word = 1 + FLOOR((@colid -1)/16)  
  
    SELECT @bit = (@colid -1) % 16  
  
    SELECT @mval = POWER(2, @bit)  
    SELECT @mask = convert( binary(2), unicode( substring( convert( nchar(2), convert( binary(4), @mval ) ), 2, 1 ) ) )  
      
    SELECT @oldword = convert( binary(2), SUBSTRING( convert( nvarchar(64),@bitmask), @word, 1) )  
    IF @oldword IS NULL return 0  
  
    return  convert( smallint, @oldword ) & convert( smallint, @mask )  
end  

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO



Je tien a préciser que je suis en SQL Server 2000

La fonction master.dbo.SYSTEM_IsBitSetInBitmask est une fonction prit de sql server 2005, j'ai seulement copier le code de la fonction sys.fn_IsBitSetInBitmask de sql server 2005.


je ne suis pas capable d'avoir les colonne qui on été updater dans la variable totalstring pour ensuite l'afficher on dirai qu'il y a un problème dans la fonction de sql server 2005.


Merci beaucoup d'avance pour votre aide


Cette discussion est classée dans : set, table, select, declare, trigger


Répondre à ce message

Sujets en rapport avec ce message

Trigger UPDATED sur plusieurs champs [ par Maroxye ] Bonjour! Je débute en SQL et je fois faire un TRIGGER sur l'ajout, la suppression et la modification de certains champs dans une table. Lorsque ces SELECT et NULL [ par babe59 ] Bonjour,J'ai une table TBL_CLIENT avec une colonne "CIVILITE" qui peut contenir des valeurs NULL.Le problème est que lorsque que j'ai un SELECT sur ce Génération de graphiques [ par pillsmen ] Bonjour à tous,Mon problème concerne la génération d'un graphique dans un état sous ACCESS.On va commencer par le commencement ^^, je pense qu'un exem Pb déclaration dans curseurs imbriqués [ par falcon16 ] Bonjour à tous, je suis en train d'écrire une procédure PL/SQL pour lister tous les enregistrements présents dans toutes les tables de ma base et ains REQUETE SQL TRIGGER pk est-ce qu'il marche pas ??? [ par dinous ] SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER     trigger TI_ROLE on dbo.ROLE for insert as begin      if exists      & Probleme ALTER TABLE DANS BOUCLE WHILE AVEC NOM DE TABLE DIFFERENT A CHAQUE ITERATION [ par vds ] Bonjour, je travaille sous sql server et je dois écrire une procédure stockée qui: -Récupere et enregistre dans la table "TableTemp" le nom de certain SQL Server & TRIGGER [ par kurky ] Bonjour, J'ai un problème sur ma base SQL Server. J'utilise une grosse base de données et il m'est impossible certaines fois de créer des relation create dynamique de colonnes [ par stefsoft ] Bonjour,je crée un table dynamiquement dans ma procédure stockéeCREATE TABLE #table (id int, nom nvarchar(30))je veux lui ajouter des colonnes dynamiq Trigger beforedelete vs delete rule de clef étrangère [ par vincentstryckmans ] Bonjour,Quelle est la meilleure solution pour effacer les record d'une table enfant lorsqu'un record de la table parent est effacé :1. Avoir une clef Recherche de données dans une table [ par LePROduHTML ] Bonjour tout le monde,J'ai trois tables MySQL table_a, table_b et table_c et une donnée sous la forme d'une variable $donnee. Je souhaite réaliser une


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales