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):
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]
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
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 reçois l'erreur suivante à chaque tentative:
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.
Je pense que le problème vient de Rowversion\Timestamp;
- 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.