frankyfrankers73
frankyfrankers73

Reputation: 1

How to set up Foreign keys MySQL

I am very new to SQL, I am using MySQL running a server set up for me to complete an assignment.

I can't understand what I am doing wrong here when assigning the foreign keys, here is my code

CREATE TABLE Customers (
    CustomersID int NOT NULL AUTO_INCREMENT,
    CustomerName varchar(50),
    AddressLine1 varchar(50),
    AddressLine2 varchar(50),
    City varchar(50),
    State varchar(50),
    PostalCode varchar(50),
    YTDPurchases decimal(19,2),
    PRIMARY KEY (CustomersID)
);

CREATE TABLE TermsCode (
    TermsCodeID varchar(50) NOT NULL,
    Description varchar(50)
);

CREATE TABLE Invoices (
    InvoiceID int NOT NULL AUTO_INCREMENT,
    CustomerID int, 
    InvoiceDate datetime,
    TermsCodeID varchar(50),
    TotalDue decimal(19,2), 
    PRIMARY KEY (InvoiceID),
    FOREIGN KEY (CustomerID) REFERENCES Customers(CustomersID),
    FOREIGN KEY (TermsCodeID) REFERENCES TermsCode(TermsCodeID)
);

I get this error

MySQL said: Documentation #1005 - Can't create table table.Invoices` (errno: 150 "Foreign key constraint is incorrectly formed")

Upvotes: 0

Views: 42

Answers (1)

The Impaler
The Impaler

Reputation: 48770

You need to add a primary key to the second table, as in:

CREATE TABLE TermsCode (
    TermsCodeID varchar(50) NOT NULL,
    Description varchar(50),
    primary key(TermsCodeID)
);

Once you do that, the tables' creation works well. See example at db<>fiddle.

Upvotes: 1

Related Questions