我有3张桌子:
create table comuni(
comune varchar(20) primary key,
cap char(5) not null,
abitanti int not null
)ENGINE=InnoDB;
create table mercati(
ubicazione varchar(20) not null,
comune varchar(20) not null,
primary key(ubicazione,comune),
foreign key(comune) references comuni(comune)
)ENGINE=InnoDB;
create table posteggi(
identificativo char(3) not null,
mq int not null,
CHECK(mq>=3),
acquistato bool not null DEFAULT 1,
ubicazione varchar(20) not null,
comune varchar(20) not null,
codice_fiscale char(16),
primary key(identificativo,ubicazione,comune),
foreign key(ubicazione,comune) references mercati(ubicazione,comune),
foreign key(codice_fiscale) references commercianti(codice_fiscale)
)ENGINE=InnoDB;
在第一张表中,我插入了两行
+-----------+-------+----------+ | comune | cap | abitanti | +-----------+-------+----------+ | tribano | 35020 | 6000 | | monselice | 35023 | 5020 | +-----------+-------+----------+
然后在第二行,
+----------------+--------+------------+----------+----------+ | ubicazione | giorno | ora_inizio | ora_fine | comune | +----------------+--------+------------+----------+----------+ | piazza mazzini | GI | 07:00:00 | 13:00:00 | tribano | +----------------+--------+------------+----------+----------+
但是当我尝试执行
时insert into posteggi(identificativo,mq,ubicazione,comune)
values('10',10,'piazza mazzini','tribano');
存在于表mercati中的我有这个错误:
错误1452(23000):无法添加或更新子行:外键约束失败(ntresold-ES.posteggi,CONSTRAINT posteggi_ibfk_1 FOREIGN KEY(ubicazione,comune)REFERENCES mercati(ubicazione,comune))< / I>
是的,问题是“tribano”之前的空间,我删除它并使用Pheonix的答案中的代码
答案 0 :(得分:0)
MySQL 5.5.30架构设置:
create table comuni(
comune varchar(20) primary key,
cap char(5) not null,
abitanti int not null
);
create table mercati(
ubicazione varchar(20) not null,
comune varchar(20) not null,
primary key(ubicazione,comune),
foreign key(comune) references comuni(comune)
);
create table posteggi(
identificativo char(3) not null,
mq int not null,
CHECK(mq>=3),
acquistato bool not null DEFAULT 1,
ubicazione varchar(20) not null,
comune varchar(20) not null,
codice_fiscale char(16),
primary key(identificativo,ubicazione,comune),
foreign key(ubicazione,comune) references mercati(ubicazione,comune)
);