我有兩個客戶表和事務表。事務表有兩個外鍵,它們引用客戶表中的兩個字段。MySQL錯誤[1215] [HY000] - 無法添加外鍵
我添加客戶表,但是當我嘗試添加事務表,它給了我:
SQL錯誤[1215] [HY000]無法添加外鍵約束
以下是我的桌子。
CREATE TABLE customerDetails(
CustomerID varchar(10)NOT NULL,
AccountNumber varchar(15) NOT NULL,
CustomerName varchar(60)NOT NULL,
Address varchar(60),
phone varchar(15),
email varchar(50),
joinedDate date,
primary key(CustomerID)
)
CREATE TABLE transactions(
TraceNumber varchar(30) NOT NULL,
AccountNumber varchar(15)NOT NULL,
CustomerName varchar(60)NOT NULL,
TransactionType varchar(15) NOT NULL,
TransactionDateTime datetime NOT NULL,
TransactionAmount double DEFAULT NULL,
PRIMARY KEY (TraceNumber),
FOREIGN KEY(CustomerName) REFERENCES customerDetails(CustomerName),
FOREIGN KEY(AccountNumber) REFERENCES customerDetails(AccountNumber)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
customerDetails(CustomerName)必須是pk或唯一的。 – jarlh
在交易中保留客戶名稱看起來像一個糟糕的主意(並且是冗餘的) - 名稱不太可能是唯一的,如果名稱發生更改,會發生什麼情況。 –
@P.Salmon在許多情況下,保留客戶詳細信息與交易時的法律要求相同。達到此目的的一種方法是將它們保存到交易表中。這不是很好,但通常很有用。 – Shadow