simuler colonne identity avec un trigger d'insertion

Le
Alain
Bonjour,

je n'arrive pas à programmer un trigger d'insertion sur sql serveur 2005
express pour simuler la progression automatique de ma clef primaire

c'est possible avec un trigger after ou je devrais passer par un un trigger
instead of ?

dans mon trigger j'utilise ce code :

declare @max_rn int
set @max_rn = (select max(rn) from bookmark)

comment mettre dans à jour la valeur rn de inserted avec @max_rn+1 ?

merci d'avance
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fred BROUARD
Le #11866871
Alain a écrit :
Bonjour,

je n'arrive pas à programmer un trigger d'insertion sur sql serveur 2005
express pour simuler la progression automatique de ma clef primaire

c'est possible avec un trigger after ou je devrais passer par un un
trigger instead of ?



ni l'un ni l'autre cela n'est pas possible !

En effet une clef primaire exige du NOT NULL. SQL Server ne dispose que
de triggers AFTER. Or vous ne verrez jamais vos données dans le trigger
puisque la contrainte not null les rejettent avant l'insertion.


dans mon trigger j'utilise ce code :

declare @max_rn int
set @max_rn = (select max(rn) from bookmark)



De plus l'utilisation du SELECT(MAX) + 1 est une véritable abération.
Pour que cela puisse marcher il faudrait que vous soyez tout le temps en
mode d'isolation SERIALIZABLE. Autrement dit que vous n'ayez jamais
qu'un seul utilisateur simultané sur votre base !!!


comment mettre dans à jour la valeur rn de inserted avec @max_rn+1 ?

merci d'avance




Lisez l'article que j'ai écrit sur le sujet :
http://sqlpro.developpez.com/cours/clefs/

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.sqlspot.com *************************
Publicité
Poster une réponse
Anonyme