Bonjour,

Envoyé par
yayas
bonjour, j'utilise delphi7 et sql server 2008n pour la BD.
j'ai un pb lors de l'insertion d'un nouveau enregistrement tq si j'insere un enregistrement avec une clé deja utilisee. il m'affiche violation de la clé primaire.
je veux avoir un programme qui teste l'existance de cette cle dans la base avant meme de passer a un autre champ
Plusieurs cas peuvent se présenter :
La table contient une colonne IDENTITY (cad auto-incrémentée) dont il n'est alors pas nécessaire de préciser la valeur lors des insertions.
Exemple :
1 2 3 4 5 6
| create table MA_TABLE_TAB
(
TAB_ID identity,
TAB_VALEUR int not null,
constraint PK_MA_TABLE_TAB primary key (TAB_ID)
) |
insert into MA_TABLE_TAB(TAB_VALEUR) values(100)
C'est le cas le plus simple avec MsSqlServer et celui à suivre. Est ce le cas de votre table ?
Je vous encourage vivement à lire ce billet de Frédéric BROUARD relatif à ce sujet : Auto incrément IDENTITY avec sql server
La table ne contient pas de colonne IDENTITY, et là ça ne va plus du tout être trivial ! Je déconseille même de poursuivre dans cette voie...
Il va falloir dans une transaction sérialisée, vérifier par une requête que l'identifiant que l'on souhaite insérer n'existe pas, si oui on réalise l'insertion et on valide la transaction, sinon on prend un autre identifiant et on réitère l'opération...
Partager