Ceci est la table parent

CREATE TABLE Customer(
Customer_ID INT(5) not null,
CustName VARCHAR(50) not null,
CustSurname VARCHAR(50) not null,
CustEmail VARCHAR(100) unique not null,
CustMobileNo INT(12) not null,
HomeAddress VARCHAR(255) not null,
Password VARCHAR(10) not null,
constraint c_cuid_pk PRIMARY KEY (Customer_ID))
ENGINE = InnoDB;

Lorsque j'essaie de créer la table des propriétés, cela me montre

"# 1072 - La colonne clé 'Customer_ID' n'existe pas dans la table"

C'est la table enfant

CREATE TABLE Property(
Property_ID INT(5) not null,
PhouseNumber INT(4) not null,
PstreetName VARCHAR(50) not null,
PpostCode VARCHAR(7) not null,
Pcity VARCHAR(20) not null,
constraint p_phn_pk PRIMARY KEY (Property_ID),
constraint p_cuid_fk FOREIGN KEY (Customer_ID)
references IndividualCustomer(Customer_ID))
ENGINE = InnoDB;
2
ram kumar 24 nov. 2017 à 04:46

3 réponses

Meilleure réponse

Dans la table Property, vous devez définir une colonne nommée Customer_ID (enfin elle pourrait être nommée n'importe quoi!), Puis vous définissez le FOREIGN KEY dessus.

Votre code essaie actuellement d'associer IndificualCustomer(Customer_ID) à Property(Customer_ID), mais Property(Customer_ID) n'existe pas.

La déclaration de la contrainte lie simplement les colonnes, mais ne les crée pas.

CREATE TABLE Property(
Property_ID INT(5) not null,
PhouseNumber INT(4) not null,
PstreetName VARCHAR(50) not null,
PpostCode VARCHAR(7) not null,
Pcity VARCHAR(20) not null,
Customer_ID INT(5) not null,
constraint p_phn_pk PRIMARY KEY (Property_ID),
constraint p_cuid_fk FOREIGN KEY (Customer_ID)
references IndividualCustomer(Customer_ID))
ENGINE = InnoDB;
2
Gleb Kemarsky 24 nov. 2017 à 07:00
CREATE TABLE Property(
Property_ID INT(5) not null,
PhouseNumber INT(4) not null,
PstreetName VARCHAR(50) not null,
PpostCode VARCHAR(7) not null,
Pcity VARCHAR(20) not null,
Customer_ID INT(5) not null,
PRIMARY KEY (Property_ID),
KEY p_cuid_fk (Customer_ID),
constraint p_cuid_fk FOREIGN KEY (Customer_ID)
references Customer(Customer_ID))
ENGINE = InnoDB;

Vous devez ajouter Customer_ID dans la table PROPERTY.

0
Ponni 24 nov. 2017 à 07:09

En premier lieu, vous devez ajouter une colonne: Customer_ID à votre table Property pour créer votre contrainte de clé étrangère:

Property.Customer_ID → IndividualCustomer.Customer_ID

Vous ne pouvez pas faire de contrainte sur quelque chose qui n'existe pas. Ou remplacez la partie +++ +++ de votre requête de création de table par une colonne existante.

constraint p_cuid_fk FOREIGN KEY (+++Customer_ID+++) --to be changed accordingly
references IndividualCustomer(Customer_ID)

Exemple : ajouter la colonne Customer_ID à votre déclaration de table vous donnerait le code suivant

CREATE TABLE Property(
Property_ID INT(5) not null,
Customer_ID INT(5) not null,
PhouseNumber INT(4) not null,
PstreetName VARCHAR(50) not null,
PpostCode VARCHAR(7) not null,
Pcity VARCHAR(20) not null,
constraint p_phn_pk PRIMARY KEY (Property_ID),
constraint p_cuid_fk FOREIGN KEY (Customer_ID)
references IndividualCustomer(Customer_ID))
ENGINE = InnoDB;
1
Gleb Kemarsky 24 nov. 2017 à 07:05
47465284