begin process at 2010 03 17 03:34:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Débutant(s)

 > 

DEFINIR UNE CONTRAINTE D'UNICITE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

DEFINIR UNE CONTRAINTE D'UNICITE

mercredi 27 août 2008 à 16:38:29 | DEFINIR UNE CONTRAINTE D'UNICITE

issousam

Bonjour,

Je m'adresse à vous car je debute en langage SQL et j'ai un probleme au niveau des contarintes d'unicité que je veux definir au sein des tables de ma base de données.

En effet, pour créer une contraintes d'unicite sous SQL SERVER 2005 (j'utilise MSDE 2005), en cherchant sur le net, j'ai trouve la syntaxe suivante : 

ALTER TABLE [dbo].[MaTable1] WITH NOCHECK
ADD CONSTRAINT [MaContrainteUnique] UNIQUE ( [champ1], [champ2])

Cela se fait aprés avoir créer ma table. Mais j'ai decouvert qu'il y avait deux facon de le faire : créer la contraintes lors de la creation de ma table ou le faire aprés avoir crée ma table.

J'ai donc repris les deux facons pour ma table :

******************1ere FACON**********************************
**********LORS DE LA CREATION DE LA TABLE*******************


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 CONSTRAINT LOGICIEL_UNIQUE 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]


*****************AUTRE FACON************************
*********APRES AVOIR CREER LATABLE******************


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 ,
 [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]

ALTER TABLE [dbo].[LOGICIEL] WITH NOCHECK ADD
 CONSTRAINT UNIQUE_LOGICIEL UNIQUE
 (
  [nom_logiciel]
 )  ON [PRIMARY]


ET LE PROBLEME EST QU'AUCUNE DES DEUX FACONS NE MARCHENT,
J'ai des erreurs du type "[nom_logiciel] n'est pas un type valide lui permettant d'être utiliser en tant que colonne clé dans un index" ou du type nom_logiciel n'est pas une clé...

Je ne vois vraiment pas d'où pourrait venir le problème  donc si vous avez une idée, merci de me la communiquer...

MERCI D'AVANCE

mercredi 27 août 2008 à 20:48:10 | Re : DEFINIR UNE CONTRAINTE D'UNICITE

nhervagault

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

Les contraintes uniques ne semblent pas fonctionner pour les champs de type TEXT (equivalent a du blob)  et le varchar(max)
mais sur un varchar(x) l'ajout fonctionne.

Bon coding

jeudi 28 août 2008 à 12:17:36 | Re : DEFINIR UNE CONTRAINTE D'UNICITE

issousam

Merci pour l'info... C'est exactement ça !!!!

Je ne savais pas que ca ne marchait pas pour les types text  -> ca marche pour les types varchar ou autres!!!!

MERCI !!!



Cette discussion est classée dans : table, logiciel, id, dbo, primary


Répondre à ce message

Sujets en rapport avec ce message

Eviter redondance des données pendant un INSERT [ par issousam ] 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é UNI Dépendance de tables SQL [ par toutgreg ] Bonjour, Je suis entrain de faire l'architecture de ma base SQL et je bloque sur une dépendance de table. Pour résumer, j'ai 3 tables et je cherche à [SQL Server 2000] Requete SQL Comparer 2 table [ par sdisp ] Bonjour.J'essaie de faire une requête qui me pose soucis!Je vous explique, j'ai de table de structure identique dans 2 bases différentes, soit:- base1 Modification propriétaire d'une table s'ube base de donées Sql [ par Palenf ] Bonjour,Je souhaiterais modifier le propriétaire d'une table d'une base de données sous SQL serveur 2000.Le problème que je rencontre est le suivant : MySQL jonction/fusion/union vers une table tierce [ par pcerne ] Bonjour, Petit schéma explicatif : J'ai une table A id int nom_id char(30) prenom_id char(30) une table B id Conception de BDD: relation n-n [ par leica69 ] Bonjour, je souhaiterais concevoir une BDD mais avant d'attaquer j'aurais une question à vous poser. En simplifiant, voici ma situation: Je veux mettr primary key sur type date [ par stefff01 ] Bonjour, J'aimerais mettre une clé primaire sur une table "historique" composée d'un numéro vers une autre table ainsi que d'une date. Le but serait d requête entre deux table -> inner join ou autre? à l'aide... [ par Michococo ] Bonjour,voici en deux mots la situation:j'ai table1 qui pointe deux fois sur table2 avec les champs table1.id_table2_1 et  table1.id_table2_2si je fa erreur creation de champs [ par georgesm ] Bonjour,j'ai une base sur Mysql avec plusieurs table. Mon problème est le suivant:Une des tables refuse l'enregistrement de nouvelles données à partir Besoin d'aide pour une requête [ par theguitou ] Bonjour,Je cherche un moyen "propre" de "transformer" une table de ce genre :ID | ATTRIBUT-------------1  | mu11  | mu21  | mu32  | mu42  | mu53  | mu


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales