mysql - Delete From in delete after trigger 不从另一个表中删除
问题描述
我正在尝试创建一个 DELETE TRIGGER,以便当从表中删除一行时,只要它不在Bike
另一个名为 in 的表中,它将删除另一个表中的行。如果它在表中,那么它将取消删除(如果可能的话,我对 sql 很陌生)。Available
Rental
Rental
BEGIN
DELETE FROM Available
Where old.bnumber = Available.bnumber;
END
现在我得到
1451: 无法删除或更新父行:外键约束失败 (
cecs535project
.available
, CONSTRAINTbnumber
FOREIGN KEY (bnumber
) REFERENCESbike
(bnumber
))
bnumber 是 Available 中引用的外键Bike
。
任何帮助表示赞赏。
CREATE TABLE `Bike` (
`bnumber` int NOT NULL,
`make` varchar(64) DEFAULT NULL,
`color` varchar(8) DEFAULT NULL,
`year` int DEFAULT NULL,
PRIMARY KEY (`bnumber`)
)
CREATE TABLE `Available` (
`bnumber` int NOT NULL,
`rack-id` int DEFAULT NULL,
PRIMARY KEY (`bnumber`),
KEY `bnumber_idx` (`rack-id`),
KEY `bnumber_idx1` (`bnumber`),
CONSTRAINT `bnumber` FOREIGN KEY (`bnumber`) REFERENCES `Bike` (`bnumber`),
CONSTRAINT `rack-id` FOREIGN KEY (`rack-id`) REFERENCES `Rack` (`id`)
)
CREATE TABLE `Rental` (
`date` date NOT NULL,
`time` time NOT NULL,
`bnumber` int NOT NULL,
`cust-id` int NOT NULL,
`src` int DEFAULT NULL,
PRIMARY KEY (`bnumber`,`cust-id`,`date`,`time`),
KEY `bnumber_idx` (`bnumber`),
KEY `cust-id_idx` (`cust-id`),
KEY `src_idx` (`src`),
CONSTRAINT `bike` FOREIGN KEY (`bnumber`) REFERENCES `Bike` (`bnumber`),
CONSTRAINT `cust-id` FOREIGN KEY (`cust-id`) REFERENCES `Customer` (`id`),
CONSTRAINT `src` FOREIGN KEY (`src`) REFERENCES `Rack` (`id`)
)
解决方案
我不是您当前设计的忠实粉丝,我认为它可以简化。考虑只为所有自行车资产提供一个表,其中一列维护当前是否出租,例如
Bike
id | name | type | rented (bit)
1 | bike1 | road | 1
2 | bike2 | mountain | 0
...
现在要记录是否租用自行车,您只需更新rented
上面的位列。如果您想从库存中删除,如果自行车是借用的,请避免这样做,您可以使用:
DELETE
FROM Bike
WHERE rented = 0; -- AND your other conditions here
推荐阅读
- python - 通过特定组合将句子拆分为句子列表
- python - 为什么 Keras 将输入形状从 (3,3) 转换为 (?,3,3)?
- shell - Bash 可选参数
- python - 如何在 Python 中有效地模拟图像压缩伪影?
- nuget - 请求被中止:无法为 nuget push 命令创建 SSL/TLS 安全通道
- amazon-web-services - AWS Api 网关 + Cloudfront 重定向到 API 网关 url
- julia - Julia 中的“yield”关键字有什么作用?
- sql-server - 从脚本恢复数据库
- python - 如何阻止 Python 程序不断增加内存使用量?
- java - UI 自动化 - 没有与 Java 互操作匹配的步骤定义方法