DROP TABLE IF EXISTS 'checkin'; CREATE TABLE 'checkin'( '序号' int(10) unsigned NOT NULL AUTO_INCREMENT, '耗材编号' int(10) unsigned DEFAULT NULL, '入库耗材' char(30) DEFAULT NULL, '数量' int(10) unsigned NOT NULL, '价格' float NOT NULL, '入库日期' date DEFAULT NULL, '入库时间' time DEFAULT NULL, PRIMARY KEY('序号'), KEY '耗材编号'('耗材编号','入库耗材'), CONSTRAINT 'checkin_ibfk_1' FOREIGN KEY ('耗材编号','入库耗材') REFERENCES 'inventory'('商品编号','商品名称') ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; INSERT INTO 'checkin' VALUES('1','15002','打印机','6','2000','2015-08-15','15:59:12'); INSERT INTO 'checkin' VALUES('2','15004','路由器','2','3000','2015-08-16','11:33:55'); INSERT INTO 'checkin' VALUES('3','15001','计算机','30','2500','2015-11-13','15:30:50'); INSERT INTO 'checkin' VALUES('4','15004','路由器','4','2500','2015-11-13','08:33:12'); 以上SQL代码有什么问题
时间: 2023-08-20 11:04:17 浏览: 103
以上SQL代码中有以下问题:
1. 表名和列名之间使用了单引号('),应该使用反引号(`)或不使用引号。
2. 在FOREIGN KEY语句中,外键引用的列名应该和主键的列名一致,但是这里的列名是 '商品编号' 和 '商品名称',而不是 '耗材编号' 和 '入库耗材'。
3. 在INSERT INTO语句中,应该使用正确的列名。
下面是修改后的代码:
```
DROP TABLE IF EXISTS `checkin`;
CREATE TABLE `checkin` (
`序号` int(10) unsigned NOT NULL AUTO_INCREMENT,
`耗材编号` int(10) unsigned DEFAULT NULL,
`入库耗材` char(30) DEFAULT NULL,
`数量` int(10) unsigned NOT NULL,
`价格` float NOT NULL,
`入库日期` date DEFAULT NULL,
`入库时间` time DEFAULT NULL,
PRIMARY KEY(`序号`),
KEY `耗材编号`(`耗材编号`,`入库耗材`),
CONSTRAINT `checkin_ibfk_1` FOREIGN KEY (`耗材编号`,`入库耗材`) REFERENCES `inventory`(`商品编号`,`商品名称`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO `checkin` VALUES('1','15002','打印机','6','2000','2015-08-15','15:59:12');
INSERT INTO `checkin` VALUES('2','15004','路由器','2','3000','2015-08-16','11:33:55');
INSERT INTO `checkin` VALUES('3','15001','计算机','30','2500','2015-11-13','15:30:50');
INSERT INTO `checkin` VALUES('4','15004','路由器','4','2500','2015-11-13','08:33:12');
```
阅读全文