begin process at 2012 05 26 13:48:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Débutant(s)

 > 

Contrainte bizarre


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

Contrainte bizarre

vendredi 16 janvier 2009 à 15:49:16 | Contrainte bizarre

arpala

Bonjour à tous,

Alors voila, pour m'entrainer je m'amuse à créer des tables dans une base de donnée.

Mais la je tombe sur un os.

Primo mon fichier texte de création de table est:
create table type(
   numero varchar(4),
   notype varchar(6),
   libelle varchar(12),
   constraint pk_type primary key (numero,notype));

create table zoneactivite (
   numero varchar(4),
   nom varchar(30),
   nozoneact varchar(8),
   secteur varchar(20),
   nomville varchar(25),
   surftotale varchar(8),
   surfdispoamenagee varchar(16),
   surfdisponue varchar(24),
   prixm2 varchar(8),
   constraint pk_nume primary key (numero,nozoneact));

create table entreprise (
   numero varchar(4),
   nooccupant varchar(8),
   raisonsoc varchar(16),
   descact varchar(16),
   rue varchar(16),
   cp varchar(4),
   ville varchar(16),
   tel varchar(16),
   mel varchar(16),
   siteweb varchar(16),
   constraint pk_entreprise primary key (numero,nooccupant));

create table local (
   numero varchar(4),
   dateactu varchar(8),
   description varchar(36),
   superficie varchar(16),
   location varchar(16),
   prix varchar(10),
   nozoneact varchar(16),
   notype varchar(16),
   nooccupant varchar(16),
   constraint pk_local primary key (numero),/jusque la c'est juste, l'erreur se trouve dans les 3 dernieres lignes.
   constraint fk_zoneact foreign key (nozoneact) references zoneactivite(nozoneact),
   constraint fk_noty foreign key (notype) references type(notype),
   constraint fk_nouc foreign key (nooccupant) references entreprise(nooccupant));

pas très complique pour la plupart d'entre vous, mais voila quand je vais sur phpmyadmin je copie colle tout sa et  paf la table local a une erreur mais les autres sont créer.

Mon erreur est:
#1005 - Can't create table '.\bonne\local.frm' (errno: 150)

sur plusieurs forum ils disent que sa vient des contraintes mais moi je ne trouve pas d'erreur, si quelqu'un pouvait m'aider se serait sympa.

Merci d'avance à bientôt
samedi 17 janvier 2009 à 01:03:08 | Re : Contrainte bizarre

ed73

Essaye de t'arranger pour que tes clés soient exactement de même type et longueur. Par exemple

zoneactivite.nozoneact est un varchar(8) et
local.nozoneact est un varchar(16)

Il se peut que MySql ne supporte pas ce genre de chose.

ed73

samedi 17 janvier 2009 à 12:02:15 | Re : Contrainte bizarre

arpala

Salut ed73, effectivement y avait sa qui gêner, mais ça me fait toujours le même message d'erreur

arpala
mardi 20 janvier 2009 à 23:55:17 | Re : Contrainte bizarre

SQLpro

Une contrainte FOREIGN KEY se greffe sur une autre contrainte de type PRIMARY KEY ou UNIQUE de la table mère.
Dans la définition de la contrainte FK_zoneact de votre table local, vous tentez d'utiliser la seule colonne zoneact qui ne correpond pas à la définition de contrainte PK (ou UNIQUE s'il en existait une) de la table zoneactivite que vous voulez référencer... C'est donc à juste titre que votre SGBDR râle !
Visiblement vous n'avez pas compris ce qu'est un modèle relationnel de données.
Une clef étrangère est en fait un ensemble de colonnes qui se trouve être clef primaire ou contrainte d'unicité d'une autre table. C'est aussi simple que cela.
Il me semble que votre modèle est furieusement bancal...
Il serait souhaitable que vous utilisiez un outil de modélisationa afin de faire ce travail. Cela vous éviterais de longues journées stériles et donc constituerais une économie drastique pour votre entreprise !

A +

Frédéric BROUARD - SQLpro - MVP SQL Server
Spécialiste SQL, SGBDR, modéles de données
SQL & SGBDR  [ Lien ]

mercredi 21 janvier 2009 à 10:25:44 | Re : Contrainte bizarre

arpala

Salut c'est bon j'ai trouvé mon erreur sans connaitre les modèles relationnels de données et sans logiciel.
Il fallait juste que dans mes contraintes j'enleve nozoneact, notype, nooccupant, et que je remplace ces 3 par numero et voila.

create table type(
   numero varchar(4),
   notype varchar(6),
   libelle varchar(12),
   constraint pk_type primary key (numero,notype));

create table zoneactivite (
   numero varchar(4),
   nom varchar(30),
   nozoneact varchar(8),
   secteur varchar(20),
   nomville varchar(25),
   surftotale varchar(8),
   surfdispoamenagee varchar(16),
   surfdisponue varchar(24),
   prixm2 varchar(8),
   constraint pk_nume primary key (numero,nozoneact));

create table entreprise (
   numero varchar(4),
   nooccupant varchar(8),
   raisonsoc varchar(16),
   descact varchar(16),
   rue varchar(16),
   cp varchar(4),
   ville varchar(16),
   tel varchar(16),
   mel varchar(16),
   siteweb varchar(16),
   constraint pk_entreprise primary key (numero,nooccupant));


create table local (
   numero varchar(4),
   dateactu varchar(8),
   description varchar(36),
   superficie varchar(16),
   location varchar(16),
   prix varchar(10),
   nozoneact varchar(8),
   notype varchar(16),
   nooccupant varchar(16),
   constraint pk_local primary key (numero),
   constraint fk_zoneact foreign key (nozoneact) references zoneactivite(numero),
   constraint fk_noty foreign key (notype) references type(numero),
   constraint fk_nouc foreign key (nooccupant) references entreprise(numero));


Cette discussion est classée dans : table, numero, key, varchar, constraint


Répondre à ce message

Sujets en rapport avec ce message

probleme avec une nouvelle foreign key [ par cudenetf ] bonjour,j'ai créé des tables sous MSDE.Je viens de remarquer que j'avais oublié de creer une foreign key et j'ai deja commencé a remplir la table.je t Clé primaire [ par fehrisoukeina ] Bonsoir,LA table empprint contient  clés primaires. create table empprint(codeexp numeric(4),codeadherent numeric(4),dateemp date,dateretour date,CONS num_auto [ par helmi2008 ] salut, svp j'ai creer cette table:create table client(numc int primary key,nomc varchar(15),prenomc varchar(15),date_de_naissance date,ncin int,nati Erreur 1452... Comprends pas ? ? ? [ par lnp ] #1452 - Cannot add or update a child row: a foreign key constraint fails (`projet/rendez_vous`, CONSTRAINT `FK_RENDEZ_VOUS` FOREIGN KEY (`ENT_USER_ID` confirmation d'une creation de table svp [ par sikove ] salutdans cette base de données : le unitcode doit etre en primary key dans les 2 tables ? euh une clé etrangere ? voila la creation des tables Erreur inconnu lors d'une requete d'ajout [ par alucard02 ] BonjourJe bloque devant cette requette simple qui permet l'enregistrement de nouveaux membres :$q1 = "insert into classmates_members set               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 Unicitee d'une combinaison de champ mySQL [ par epicfail ] Bonjour, je voudrais que dans ma table compose de 5 champs, la combinaison de ces 5 champs soit unique mais je ne sais pas comment faire merci de m'a créer table avec plusieur clés etrangérs en sql server 2005 [ par amal2008 ] Bonjour, je veux faire une requete de create table en sql server 2005 , avec tous les contrainres et types des champs,le probléme c'est qu il m'accept Bataille SQL2000/SQL2005 [ par crn_c21 ] Bonjour, Quelq'un pourrat-il m'expliquer pour quoi le lot suivant fonctionne sous 2005 et pas sous 2000 : CREATE TABLE #T (A int,B varchar(10) )


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 2,122 sec (3)

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