Bonjour,
Nouveau dans SQL server, je voudrais disposer pour toutes les lignes de
toutes mes tables des 4 colonnes suivantes :
Creator (int) -- User_Id(user)
Created (Datetime) -- GetutcDate()
Modifier (int) -- idem
Modified (Datetime) -- idem
J'ai :
1) mis dans un trigger for insert
update <table> set
Created = GetutcDate(),
Creator = user_id( user )
where <PK> in ( select <PK> from inserted )
2) mis dans un triger for update
update <table> set
Modified = GetutcDate(),
Modifier = user_id( user )
where <PK> in ( select <PK> from inserted )
Quand j'insere une nouvelle ligne, les triggers for insert and update se
déclanchent (le deuxième à cause de l'update dans le trigger for insert).
Y-a-t-il une manière d'éviter cela?
Y-a-t-il une manière toute différente d'arriver au résultat souhaité?
Je constate que les dates sont au temps GMT, comment peut-on les afficher à
GMT+2?
Merci d'avance.
--
Robert Plagnard
Communauté Francophone des Professionnels FoxPro
Pour un développement durable...
http://www.atoutfox.net
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
Robert Plagnard a écrit :
Bonjour, Nouveau dans SQL server, je voudrais disposer pour toutes les lignes de toutes mes tables des 4 colonnes suivantes : Creator (int) -- User_Id(user) Created (Datetime) -- GetutcDate() Modifier (int) -- idem Modified (Datetime) -- idem
J'ai : 1) mis dans un trigger for insert update <table> set Created = GetutcDate(), Creator = user_id( user ) where <PK> in ( select <PK> from inserted ) 2) mis dans un triger for update update <table> set Modified = GetutcDate(), Modifier = user_id( user ) where <PK> in ( select <PK> from inserted )
Quand j'insere une nouvelle ligne, les triggers for insert and update se déclanchent (le deuxième à cause de l'update dans le trigger for insert). Y-a-t-il une manière d'éviter cela? Y-a-t-il une manière toute différente d'arriver au résultat souhaité? Je constate que les dates sont au temps GMT, comment peut-on les afficher à GMT+2? Merci d'avance.
update <table> set Created = CURRENT_TIMESTAMP, Creator = uid FROM <table> T INNER JOIN inserted i ON T.<maClef> = i.<maClef> CROSS JOIN master.dbo.sysprocesses WHERE spid = @@SPID
pensez aussi à interdire les triggers imbriqués au niveau serveur (sp_configure) et les triggers récursif au niveau de la base ALTER DATABASE.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Robert Plagnard a écrit :
Bonjour,
Nouveau dans SQL server, je voudrais disposer pour toutes les lignes de
toutes mes tables des 4 colonnes suivantes :
Creator (int) -- User_Id(user)
Created (Datetime) -- GetutcDate()
Modifier (int) -- idem
Modified (Datetime) -- idem
J'ai :
1) mis dans un trigger for insert
update <table> set
Created = GetutcDate(),
Creator = user_id( user )
where <PK> in ( select <PK> from inserted )
2) mis dans un triger for update
update <table> set
Modified = GetutcDate(),
Modifier = user_id( user )
where <PK> in ( select <PK> from inserted )
Quand j'insere une nouvelle ligne, les triggers for insert and update se
déclanchent (le deuxième à cause de l'update dans le trigger for insert).
Y-a-t-il une manière d'éviter cela?
Y-a-t-il une manière toute différente d'arriver au résultat souhaité?
Je constate que les dates sont au temps GMT, comment peut-on les afficher à
GMT+2?
Merci d'avance.
update <table>
set Created = CURRENT_TIMESTAMP,
Creator = uid
FROM <table> T
INNER JOIN inserted i
ON T.<maClef> = i.<maClef>
CROSS JOIN master.dbo.sysprocesses
WHERE spid = @@SPID
pensez aussi à interdire les triggers imbriqués au niveau serveur
(sp_configure) et les triggers récursif au niveau de la base ALTER DATABASE.
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Bonjour, Nouveau dans SQL server, je voudrais disposer pour toutes les lignes de toutes mes tables des 4 colonnes suivantes : Creator (int) -- User_Id(user) Created (Datetime) -- GetutcDate() Modifier (int) -- idem Modified (Datetime) -- idem
J'ai : 1) mis dans un trigger for insert update <table> set Created = GetutcDate(), Creator = user_id( user ) where <PK> in ( select <PK> from inserted ) 2) mis dans un triger for update update <table> set Modified = GetutcDate(), Modifier = user_id( user ) where <PK> in ( select <PK> from inserted )
Quand j'insere une nouvelle ligne, les triggers for insert and update se déclanchent (le deuxième à cause de l'update dans le trigger for insert). Y-a-t-il une manière d'éviter cela? Y-a-t-il une manière toute différente d'arriver au résultat souhaité? Je constate que les dates sont au temps GMT, comment peut-on les afficher à GMT+2? Merci d'avance.
update <table> set Created = CURRENT_TIMESTAMP, Creator = uid FROM <table> T INNER JOIN inserted i ON T.<maClef> = i.<maClef> CROSS JOIN master.dbo.sysprocesses WHERE spid = @@SPID
pensez aussi à interdire les triggers imbriqués au niveau serveur (sp_configure) et les triggers récursif au niveau de la base ALTER DATABASE.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Robert Plagnard
Merci beaucoup, C'est exactement ce que je cherchais. A+ -- Robert Plagnard Communauté Francophone des Professionnels FoxPro Pour un développement durable... http://www.atoutfox.net
"Fred BROUARD" a écrit :
Robert Plagnard a écrit : > Bonjour, > Nouveau dans SQL server, je voudrais disposer pour toutes les lignes de > toutes mes tables des 4 colonnes suivantes : > Creator (int) -- User_Id(user) > Created (Datetime) -- GetutcDate() > Modifier (int) -- idem > Modified (Datetime) -- idem > > J'ai : > 1) mis dans un trigger for insert > update <table> set > Created = GetutcDate(), > Creator = user_id( user ) > where <PK> in ( select <PK> from inserted ) > 2) mis dans un triger for update > update <table> set > Modified = GetutcDate(), > Modifier = user_id( user ) > where <PK> in ( select <PK> from inserted ) > > Quand j'insere une nouvelle ligne, les triggers for insert and update se > déclanchent (le deuxième à cause de l'update dans le trigger for insert). > Y-a-t-il une manière d'éviter cela? > Y-a-t-il une manière toute différente d'arriver au résultat souhaité? > Je constate que les dates sont au temps GMT, comment peut-on les afficher à > GMT+2? > Merci d'avance. >
update <table> set Created = CURRENT_TIMESTAMP, Creator = uid FROM <table> T INNER JOIN inserted i ON T.<maClef> = i.<maClef> CROSS JOIN master.dbo.sysprocesses WHERE spid = @@SPID
pensez aussi à interdire les triggers imbriqués au niveau serveur (sp_configure) et les triggers récursif au niveau de la base ALTER DATABASE.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Merci beaucoup,
C'est exactement ce que je cherchais.
A+
--
Robert Plagnard
Communauté Francophone des Professionnels FoxPro
Pour un développement durable...
http://www.atoutfox.net
"Fred BROUARD" a écrit :
Robert Plagnard a écrit :
> Bonjour,
> Nouveau dans SQL server, je voudrais disposer pour toutes les lignes de
> toutes mes tables des 4 colonnes suivantes :
> Creator (int) -- User_Id(user)
> Created (Datetime) -- GetutcDate()
> Modifier (int) -- idem
> Modified (Datetime) -- idem
>
> J'ai :
> 1) mis dans un trigger for insert
> update <table> set
> Created = GetutcDate(),
> Creator = user_id( user )
> where <PK> in ( select <PK> from inserted )
> 2) mis dans un triger for update
> update <table> set
> Modified = GetutcDate(),
> Modifier = user_id( user )
> where <PK> in ( select <PK> from inserted )
>
> Quand j'insere une nouvelle ligne, les triggers for insert and update se
> déclanchent (le deuxième à cause de l'update dans le trigger for insert).
> Y-a-t-il une manière d'éviter cela?
> Y-a-t-il une manière toute différente d'arriver au résultat souhaité?
> Je constate que les dates sont au temps GMT, comment peut-on les afficher à
> GMT+2?
> Merci d'avance.
>
update <table>
set Created = CURRENT_TIMESTAMP,
Creator = uid
FROM <table> T
INNER JOIN inserted i
ON T.<maClef> = i.<maClef>
CROSS JOIN master.dbo.sysprocesses
WHERE spid = @@SPID
pensez aussi à interdire les triggers imbriqués au niveau serveur
(sp_configure) et les triggers récursif au niveau de la base ALTER DATABASE.
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Merci beaucoup, C'est exactement ce que je cherchais. A+ -- Robert Plagnard Communauté Francophone des Professionnels FoxPro Pour un développement durable... http://www.atoutfox.net
"Fred BROUARD" a écrit :
Robert Plagnard a écrit : > Bonjour, > Nouveau dans SQL server, je voudrais disposer pour toutes les lignes de > toutes mes tables des 4 colonnes suivantes : > Creator (int) -- User_Id(user) > Created (Datetime) -- GetutcDate() > Modifier (int) -- idem > Modified (Datetime) -- idem > > J'ai : > 1) mis dans un trigger for insert > update <table> set > Created = GetutcDate(), > Creator = user_id( user ) > where <PK> in ( select <PK> from inserted ) > 2) mis dans un triger for update > update <table> set > Modified = GetutcDate(), > Modifier = user_id( user ) > where <PK> in ( select <PK> from inserted ) > > Quand j'insere une nouvelle ligne, les triggers for insert and update se > déclanchent (le deuxième à cause de l'update dans le trigger for insert). > Y-a-t-il une manière d'éviter cela? > Y-a-t-il une manière toute différente d'arriver au résultat souhaité? > Je constate que les dates sont au temps GMT, comment peut-on les afficher à > GMT+2? > Merci d'avance. >
update <table> set Created = CURRENT_TIMESTAMP, Creator = uid FROM <table> T INNER JOIN inserted i ON T.<maClef> = i.<maClef> CROSS JOIN master.dbo.sysprocesses WHERE spid = @@SPID
pensez aussi à interdire les triggers imbriqués au niveau serveur (sp_configure) et les triggers récursif au niveau de la base ALTER DATABASE.
A +
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************