我有两个客户表和事务表。事务表有两个外键,它们引用客户表中的两个字段。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