bonjour,
Quelqu'un sait il s'il est possible de désactiver les contraintes de clé primaire le temps d'une copie brute de données par code ?
merci !
bonjour,
Quelqu'un sait il s'il est possible de désactiver les contraintes de clé primaire le temps d'une copie brute de données par code ?
merci !
Non tu dois supprimer la contrainte, inserer tes données et reposer ta contrainte pour vu que tes données puissent respecter ta contrainte de clé primaire.
en fait, c'est bizarre :
j'ai une base de données Access, une base de données SQL Server.
J'ai développé un outil avec Access qui permet d'insérer les données de la base Access dans celle SQL Server. En gros, je fais des :
Tout en respectant bien l'ordre d'insertion pour la contrainte des clés étrangères...
Code : Sélectionner tout - Visualiser dans une fenêtre à part insert into tablecible(champ1, champ2...) select champ1,champ2 from tablesource
Mais chose bizarre : même lors d'insertions dans des tables indépendantes de clés étrangères, Access me retourne un message d'erreur "Violation de clé..."
Je fais bien un "set identity_insert on" avant d'insérer les données donc ça vient pas de là...
Le seul moyen est donc de supprimer toutes les relations et de les refaires une à une par code ? (j'ai une 50aine de tables...)
merci pour tes remarques.
apparemment ça viendrait des champs compteur en clé primaire...
pourtant je mets bien "set identity_insert NomTable ON"...
Est il possible de modifier la clé primaire par le code pour enelver l'attribut identity ? (On peut le faire à la main via enterprise manager donc je me dis que ça doit etre possible...
merci
Quand vous désactivez la contrainte d'autoincrément, alors, vous devez inserer sa valeur manuellement .
Exemple :
Et pas de problème !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Create table T_Matable ( ma_id int not null identity(0,1) primary key, ma_valeur int ) go SET IDENTITY_INSERT T_MaTable ON; INSERT INTO T_MaTable(ma_id,ma_valeur) values(0,23) INSERT INTO T_MaTable(ma_id,ma_valeur) values(4,12) go
...chez moi il y a un pb. Le seul moyen que j'ai trouvé pour insérer et de désactiver le compteur via enterprise manager, ce qui n'est finalement pas très gênant car cette base ne sert qu'à la consultation.
ps: je fais partie de ceux qui cherchent avant de poster![]()
Quel est le message qu'il te donne ?
bah en fait c'est Access qui me renvoit le message générique du genre :
Bizarre mais bon j'ai contourné le problème.MonApplication ne peut pas ajouter tous les enregistrements de la requete Ajout.
MonApplication a attribué la valeur Null à 0 champ(s) à la suite d'une erreur de conversion de type, 1 enregistrement(s) n'ont pas été ajoutés à la table à la suite de violation de clé, 0 enregistrement(s) à la suite de violation de verrous..........etc
a+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager