Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

simuler colonne identity avec un trigger d'insertion

1 réponse
Avatar
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

1 réponse

Avatar
Fred BROUARD
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 *************************