mysql错误1215hy000_无法添加外键约束-MySQL错误1215(HY000)

小编典典

为了将字段定义为foreign key,引用的父字段必须在其上定义了索引。

根据有关foreign key约束的文档:

参考parent_tbl_name(index_col_name,…)

定义INDEX上workouts.workoutName,paymentFor.paymentName和supplements.supplementName分别。并确保子列定义必须与其父列定义匹配。

更改workouts表定义如下:

CREATE TABLE workouts(

workoutId int(100) NOT NULL AUTO_INCREMENT,

workoutName VARCHAR(100) NOT NULL,

description VARCHAR(7500) NOT NULL,

duration VARCHAR(30),

KEY ( workoutName ), --

CONSTRAINT PRIMARY KEY(workoutId, workoutName)

);

更改supplements表定义如下:

CREATE TABLE supplements(

supplementId int(100) NOT NULL AUTO_INCREMENT,

supplementName VARCHAR(250) NOT NULL,

manufacture VARCHAR(100),

description VARCHAR(150),

qtyOnHand INT(5),

unitPrice DECIMAL(11,2),

manufactureDate DATE,

expirationDate DATE,

KEY ( supplementName ), --

CONSTRAINT PRIMARY KEY(supplementId, supplementName)

);

更改paymentFor表定义如下:

CREATE TABLE paymentFor(

payId int(100) NOT NULL AUTO_INCREMENT,

payName VARCHAR(100) NOT NULL,

amount DECIMAL(11,2),

KEY ( payName ), --

CONSTRAINT PRIMARY KEY(payId, payName)

);

现在,如下更改子表定义:

CREATE TABLE sales(

saleId int(100) NOT NULL AUTO_INCREMENT,

accountNo int(100) NOT NULL,

payName VARCHAR(100) NOT NULL,

nextPayment DATE,

supplementName VARCHAR(250) NOT NULL,

qty int(11),

workoutName VARCHAR(100) NOT NULL,

sDate datetime NOT NULL DEFAULT NOW(),

totalAmount DECIMAL(11,2) NOT NULL,

CONSTRAINT PRIMARY KEY(saleId, accountNo, payName),

CONSTRAINT FOREIGN KEY(accountNo)

REFERENCES accounts(accountNo)

ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT FOREIGN KEY(payName)

REFERENCES paymentFor(payName)

ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT FOREIGN KEY(supplementName)

REFERENCES supplements(supplementName)

ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT FOREIGN KEY(workoutName)

REFERENCES workouts(workoutName)

ON DELETE CASCADE ON UPDATE CASCADE

);

参考 :

[CONSTRAINT [符号]]外键

[index_name](index_col_name,…)

参考tbl_name(index_col_name,…)

[ON DELETE reference_option]

[ON UPDATE reference_option]

reference_option:

RESTRICT | 级联| SET NULL | 不采取行动

2020-05-17

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值