Violation de clef alternative
Hello,
Dans une application, j'obtiens un message erreur signalant que je tente d'insérer de données dans une table et que ces données violent une clef alternative.
Voici le message :
Citation:
Violation of UNIQUE KEY constraint 'AK_T_ACTIVATION_ACT'. Cannot insert duplicate key in object 'dbo.T_ACTIVATION_ACT'. The duplicate key value is (384, 163).
The statement has been terminated
Voici le DDL de la table (et de la clef) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
USE [GIFT_MANAGEMENT]
GO
/****** Object: Table [dbo].[T_ACTIVATION_ACT] Script Date: 05/23/2013 11:59:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[T_ACTIVATION_ACT](
[ACT_ID] [int] IDENTITY(1,1) NOT NULL,
[GFT_ID] [int] NOT NULL,
[DOS_ID] [int] NOT NULL,
[ACT_DATE] [datetime] NOT NULL,
[ACT_CREATED_ON] [datetime] NOT NULL,
[ACT_CREATED_BY] [varchar](100) NOT NULL,
[ACT_MODIFIED_ON] [datetime] NULL,
[ACT_MODIFIED_BY] [varchar](100) NULL,
CONSTRAINT [PK_T_ACTIVATION_ACT] PRIMARY KEY CLUSTERED
(
[ACT_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [AK_T_ACTIVATION_ACT] UNIQUE NONCLUSTERED
(
[GFT_ID] ASC,
[DOS_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [NDX]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[T_ACTIVATION_ACT] WITH CHECK ADD CONSTRAINT [FK_T_ACTIVATION_ACT_TJ_GFT_DOS_JGD] FOREIGN KEY([GFT_ID], [DOS_ID])
REFERENCES [dbo].[TJ_GFT_DOS_JGD] ([GFT_ID], [DOS_ID])
GO
ALTER TABLE [dbo].[T_ACTIVATION_ACT] CHECK CONSTRAINT [FK_T_ACTIVATION_ACT_TJ_GFT_DOS_JGD]
GO
ALTER TABLE [dbo].[T_ACTIVATION_ACT] ADD CONSTRAINT [DF__T_ACTIVAT__ACT_C__02B25B50] DEFAULT (getdate()) FOR [ACT_CREATED_ON]
GO
ALTER TABLE [dbo].[T_ACTIVATION_ACT] ADD CONSTRAINT [DF__T_ACTIVAT__ACT_C__03A67F89] DEFAULT (suser_sname()) FOR [ACT_CREATED_BY]
GO |
Et voici les valeurs présentent actuellement dans la table concernée (en espérant que cela se présente bien sur le forum):
Code:
1 2 3 4 5 6
| ACT_ID GFT_ID DOS_ID ACT_DATE ACT_CREATED_ON ACT_CREATED_BY ACT_MODIFIED_ON ACT_MODIFIED_BY
4827 384 162 2013-05-23 11:49:58.987 2013-05-23 11:49:59.040 INNO\geoffroy NULL NULL
4828 385 162 2013-05-23 11:49:58.987 2013-05-23 11:49:59.040 INNO\geoffroy NULL NULL
4829 386 162 2013-05-23 11:49:58.987 2013-05-23 11:49:59.040 INNO\geoffroy NULL NULL
4830 387 162 2013-05-23 11:49:58.987 2013-05-23 11:49:59.040 INNO\geoffroy NULL NULL
4831 388 162 2013-05-23 11:49:58.987 2013-05-23 11:49:59.040 INNO\geoffroy NULL NULL |
On constate donc qu'il n'y a pas de violation car, pour moi, 162 est bien différent de 163 ^^.
Du coup, je ne comprends pas pourquoi j'obtiens ce message d'erreur :aie: