当我尝试将这些表源化为MySQL时,它创建了所有表。然后我开始填充表格,它不会让我填充最后一个表Rental_Invoice。有什么建议吗?
错误是
错误1452(23000):无法添加或更新子行:外键 约束失败(
SFRC_HIDDEN
。Rental_Invoice
,CONSTRAINTRental_Invoice_fk_Client_Contact
外键(Client_ID
) 参考Client_Contact
(Client_ID
))
create table Client_Contact
(
Client_ID int Primary Key Auto_Increment,
Client_First_Name varchar(50) Not Null,
Client_Last_Name varchar(50) Not Null,
Client_Address varchar(50),
Client_City varchar(50) Not Null,
Client_State Char(2) Not Null,
Client_Zip_Code varchar(20) Not Null,
Client_Phone varchar(20),
Client_Email varchar(30)
);
create table Owner_Contact
( Owner_ID int Primary Key,
Owner_First_Name varchar(50) Not Null,
Owner_Last_Name varchar(50) Not Null,
Owner_Address varchar(50),
Owner_City varchar(50) Not Null,
Owner_State varchar(2) Not Null,
Owner_Zip_Code varchar(20) Not Null,
Owner_Phone varchar(20),
Owner_Email varchar(30)
);
create table Property_Info
(Property_ID varchar(20) Primary Key,
Owner_ID int Not Null,
Property_Type varchar(30) Not Null,
Pets set('Yes','No') Not Null,
Internet set('yes','No') Not Null,
constraint Property_Info_fk_Owner_Contact
foreign key (Owner_ID)
references Owner_Contact (Owner_ID));
create table Rental_Invoice
( Invoice_ID int Primary Key,
Property_ID varchar(10) Not Null,
Client_ID int Not Null,
Arrival_Date date Not Null,
Departure_Date date Not Null,
Deposit_Amount decimal(5,2) Not Null,
Pet_Deposit_Amount decimal(7,2),
Pet_Type enum('cat', 'dog', ''),
Cleaning_Fee decimal(5,2) Not Null,
Rental_Rate decimal(5,2) Not Null,
Method_Of_Payment varchar(20) Not Null,
constraint Rental_Invoice_fk_Client_Contact foreign key (Client_ID) references Client_Contact (Client_ID)
);
答案 0 :(得分:0)
初始问题
随便猜测,因为我现在没有安装任何MySQL。但依赖表中的Client_ID是VARCHAR,它引用父表中的INTEGER列。
编辑后
外键约束是通过在SELECT
中插入没有相应行的Rental_Invoice
行引起的。换句话说,您的数据违反了Client_Contact
外键约束,该约束要求Rental_Invoice_fk_Client_Contact
引用Rental_Invoice.Client_ID
中匹配Client_Contact
的现有行。