mysql - 关于“外键约束失败”异常
问题描述
假设我有这两张桌子:
CREATE TABLE `tblsuppliers` (
`supplierID` int(11) NOT NULL AUTO_INCREMENT,
`supplierName` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`phoneNumber` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`emailAddress` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`physicalAddress` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`supplierID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE `tblorders` (
`orderID` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`supplierID` int(11) NOT NULL,
`productID` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`dateOrdered` date DEFAULT NULL,
`dateArriving` date DEFAULT NULL,
`isJob` bit(1) NOT NULL,
`username` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`quantity` decimal(10,0) NOT NULL,
`hasArrived` bit(1) DEFAULT NULL,
PRIMARY KEY (`orderID`),
KEY `tblorders_FK_1` (`username`),
KEY `tblorders_FK_2` (`productID`),
KEY `tblorders_FK` (`supplierID`),
CONSTRAINT `tblorders_FK` FOREIGN KEY (`supplierID`) REFERENCES `tblsuppliers` (`supplierID`) ON UPDATE CASCADE,
CONSTRAINT `tblorders_FK_1` FOREIGN KEY (`username`) REFERENCES `tblusers` (`username`) ON UPDATE CASCADE,
CONSTRAINT `tblorders_FK_2` FOREIGN KEY (`productID`) REFERENCES `tblproducts` (`productID`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
我希望能够删除供应商,但将他们的记录保留在订单中,截至目前,我无法做到,我得到了那个例外。过去几天我一直在这里寻找解决方案,但到目前为止,我只发现约束是相反的
我很确定我错过了一个基本概念,而且我知道这种类型的问题在这里被问了很多次,但是从解释中,我知道我做错了什么,只是不知道是什么。如果我能解释它是什么,我将不胜感激。谢谢
解决方案
推荐阅读
- ios - SwiftUI:在 NavigationView 中嵌入父视图时不调用 PreferenceKey
- node.js - 有没有办法将 discord.js 集合下载为文件并在机器人出现故障时恢复它?
- c# - 为什么 C# 中的 Image.Save() 并不总是给出相同的序列化结果以及如何以确定的方式序列化图像?
- java - 如何递归地制定二元微分问题?
- c# - 检测类属性C#中的变量值变化
- mysql - 从另一个表更新但加入计算列
- xml - XSLT - 重命名具有特定属性的所有子元素
- arm - Bare Metal Programming on STM32WB55 or STM32F10
- ejs - How do I update which option is selected based on EJS
- reporting-services - 如何在 SSRS (SQL Server Reporting Services) 的 iif 表达式中使用多值参数?