Bonjour,
je voudrais savoir comment eviter la redondance de données dans ma table lors d'INSERT.
J'ai essayé en definissant une contrainte d'unicité UNIQUE sur le champ mais le problème est que dés qu'il veut inserer une données qui existe déjà -> il ne le fait pas (jusque là TOUT VA BIEN) mais le problème est qu'il arrete l'instruction et donc arrete d'inserer la suite des données.
Voila le code :
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[LOGICIEL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
CREATE TABLE [dbo].[LOGICIEL] (
[id_logiciel] [int] IDENTITY (1, 1) NOT NULL ,
[nom_logiciel] [text] NOT NULL UNIQUE,
[is_os] [text] NOT NULL,
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
END
GO
ALTER TABLE [dbo].[LOGICIEL] WITH NOCHECK ADD
CONSTRAINT [PK_LOGICIEL] PRIMARY KEY CLUSTERED
(
[id_logiciel]
) ON [PRIMARY]
et le code permettant de me connecter à la base de données (fichier .cs)
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectString"].ToString())) {
SqlCommand cmd; string maRequete;
maRequete = "INSERT INTO dbo.LOGICIEL(nom_logiciel,is_os) VALUES (@BDD_newL,'"+BDD_os+"')";
cmd = new SqlCommand(maRequete,cn);
cmd.Parameters.Add(new SqlParameter("@BDD_newL", SqlDbType.VarChar, 512));
cmd.Parameters["@BDD_newL"].Value = BDD_newL;
cn.Open();
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
Voila !!!
L'erreur que j'obtiens est : Violation de la contrainte UNIQUE KEY 'UQ_LOGICIEL_4119A21D' Impossible d'inserer une cle en double dans l'objet 'dbo.LOGICIEL'.
L'instruction a été arrété
SI vous avez une idée, Merci de me repondre !!!