Bonjour,
J'ai un soucis d'insertion de données que je ne trouve pas la solution et je ne sais plus quoi faire
Ci-dessous la structure de la table cible (réduite):
La requête d'insertion (la table ADRESSE_TMP n'a pas le champ Timestamp):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 /* Table d'un logiciel tiers qu'on utilise en production */ CREATE TABLE [dbo].[ADRESSE]( [ADRESSE_NR] [decimal](10, 0) NOT NULL, [NAME] [varchar](32) NULL, .. [ROWVERSION] [timestamp] NOT NULL, CONSTRAINT [XPKADRESSE] PRIMARY KEY NONCLUSTERED ( [ADRESSE_NR] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Je reçois l'erreur suivante à chaque tentative:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 INSERT INTO dbo.[ADRESSE] ([ADRESSE_NR], [NAME]) SELECT [ADRESSE_NR] ,[NAME] FROM dbo.[ADRESSE_TMP] WHERE [ADRESSE_NR] BETWEEN 71010000 AND 71019999 AND [ADRESSE_NR] NOT IN (SELECT [ADRESSE_NR] FROM dbo.[ADRESSE])
Je pense que le problème vient de Rowversion\Timestamp;Msg*2601, Niveau*14, État*1, Ligne*2
Cannot insert duplicate key row in object 'dbo.ADRESSE' with unique index 'XAK1ADRESSE'.
The statement has been terminated.
- SELECT @@DBTS m'affiche : 0x00000000011F1CCA
- PRINT MIN_ACTIVE_ROWVERSION() m'affiche : 0x00000000011F1CCB
- SELECT MAX(ROWVERSION) FROM dbo.[ADRESSE] m'affiche : 0x00000000011EF439
Questions:
- Est-ce que le problème est provoqué du faite que la valeur de MAX(ROWVERSION) : 0x00000000011EF439 soit inférieure de la valeur MIN_ACTIVE_ROWVERSION() : 0x00000000011F1CCB
- Est-il possible de déterminer la valeur initiale de Timestamp dans la base de données, par exemple "0x00000000011F1CCB"?
Je suis complètement perdu et j'espère avoir ici quelques éclaircissement!
Merci d'avance de votre aide.![]()
Partager