谢谢您抽时间见我。我正在尝试用以下说明构建一个数据库
T1-酒店(hotelNo,hotelName,城市)T2-房间(roomNo,hotelNo,type,price) T3-客人(guestNo,guestName,guestAddress) T4-预订(hotelNo,guestNoE 29
,E 110
日期从E 211
,hotelNo,guestAddress)
我得到了一个约束复制错误,但我无法判断模式中存在复制。
CREATE TABLE `hotel_booking`.`Booking` (
`hotelNo` VARCHAR(5) NOT NULL,
`guestNo` VARCHAR(5) NOT NULL,
`datefFrom` DATE NOT NULL,
`dateTo` DATE NULL,
`roomNo` VARCHAR(5) NULL,
PRIMARY KEY (`hotelNo`, `guestNo`, `datefFrom`),
INDEX `guestNo_idx` (`guestNo` ASC) VISIBLE,
INDEX `roomNo_idx` (`roomNo` ASC) VISIBLE,
CONSTRAINT `hotelNo`
FOREIGN KEY (`hotelNo`)
REFERENCES `hotel_booking`.`Hotel` (`hotelNo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `guestNo`
FOREIGN KEY (`guestNo`)
REFERENCES `hotel_booking`.`Guest` (`guestNo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `roomNo`
FOREIGN KEY (`roomNo`)
REFERENCES `hotel_booking`.`Room` (`roonNo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
我得到以下错误错误1826:重复外键约束名称'hotelNo‘什么是错误的,它可以如何纠正?
发布于 2021-01-06 09:19:16
创建约束时,它的名称是数据库范围的。可以使用以下方法列出数据库的所有约束:
select *
from information_schema.table_constraints
where constraint_schema = 'YOUR_DB'
您有此错误,因为您选择将该表上的禁忌名称与同一数据库的另一个表上的另一个约束赋予相同的名称。例如,您可以在约束名称前加上表的名称,这样针对同一个TargetTable.TargetColumn的不同表的约束之间就不会有更多的干扰。
致以问候。蒂埃里·布雷马德
发布于 2020-10-12 17:54:25
您的constraint_name与您的列名相同,导致重复/歧义,将您的foreignkey约束名称更改为与您的列名不同的其他名称,如constraint hello1...
CONSTRAINT `hotelNo1`
FOREIGN KEY (`hotelNo`)
其他人也是如此
https://stackoverflow.com/questions/64322581
复制相似问题