0

我有 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;

在第一个表中,我插入了两行

+-----------+--------+----------+
| 公社 | 帽 | 阿比特提 |
+-----------+--------+----------+
| 特里巴诺 | 35020 | 6000 |
| 蒙塞利斯 | 35023 | 5020 |
+-----------+--------+----------+

然后在第二行,

+----------------+--------+------------+---------- +----------+
| 育碧 | 乔鲁诺 | ora_inizio | ora_fine | 公社 |
+----------------+--------+------------+---------- +----------+
| 马志尼广场 | 胃肠道 | 07:00:00 | 13:00:00 | 特里巴诺 |
+----------------+--------+------------+---------- +----------+

但是当我尝试执行时

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))

是的,问题是“tribano”之前的空格,我将其删除并使用 Pheonix 答案中的代码

4

1 回答 1

0

SQL小提琴

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)
);
于 2013-06-03T12:47:35.120 回答