Trigger et @@identity dans sql server

grapevine Messages postés 29 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 15 juillet 2009 - 22 avril 2009 à 16:27
grapevine Messages postés 29 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 15 juillet 2009 - 26 avril 2009 à 23:47
Bonjour à tous ,
Je me pose une question assez pointue et j'attends que les spécialistes de sql server se manifestent :

Imaginer que je crée une table TBL très simple avec 2 champs :
1-champs ID_PRI qui est une clé primaire auto-incrémentale de type entiere
2-champs B qui est un champs texte

soit la déclaration suivante :

CREATE TABLE [dbo].[TBL](
    [ID_PRI ] [smallint] IDENTITY(1,1) NOT NULL,
    [B] [varchar](100) NOT NULL,
 CONSTRAINT [PK_TBL] PRIMARY KEY CLUSTERED
(
    [ID_PRI] ASC)WITH (PAD_INDEX  OFF, STATISTICS_NORECOMPUTE  OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

Mon idée est simple , je crée un trigger after insert sur la table TBL  qui inserera dans une table d'historique la valeur courrante de l'ID_PRI qui vient d'être autogénérer dans la table TBL.

(Imaginons que le table d'historique possède une seul colonne   [ID_PRI] qui recevra les nouveaux ID autoincrémenté de TBL)

Donc le code de mon trigger serai un truc très simple :

CREATE TRIGGER [dbo].[TRI_TBL]
   ON  [dbo].[TBL]
   AFTER INSERT
AS
BEGIN

    SET NOCOUNT ON;

    insert into HST(ID_PRI)
        select INSERTED.ID_PRI from INSERTED

END

Lorsque j'insère de nouvelles lignes dans la table TBL , sql server me met un warning à chaque fois lorsque j'execute les requetes sql dans le sql management studio.
Est-ce normal et qu'est-ce qu'on peut faire. ?

2 réponses

gperuch Messages postés 40 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 2 février 2012 1
26 avril 2009 à 20:19
Essais ca mais je ne suis pas sure:

CREATE TRIGGER [dbo].[TRI_TBL]
   ON  [dbo].[TBL]
   AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;
 
declare @ID_PRI int
 
set @ID_PRI = INSERTED.ID_PRI

    insert into HST(ID_PRI)
        values (@ID_PRI)

END
Il faudrait un copier coller du warning si ca ne marche pas

greg
0
grapevine Messages postés 29 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 15 juillet 2009
26 avril 2009 à 23:47
Merci Greg , en fait  je viens de constater que le problème se posait sur sql server 2000 , mais il ne se pas sur 2005.
Merci d'y avoir jeter un coup d'oeil en tout cas

zenzen
0
Rejoignez-nous