create table HallSchedule
(
date varchar(10) not null,
startTime varchar(4) not null,
hallNo char(5) not null,
cinemaName varchar(100) not null,
primary key (date, startTime, hallNo, cinemaName),
foreign key (cinemaName) references Cinema,
foreign key (hallNo, cinemaName) references Hall
)
在这个SQL表中,我声明了cinemaName is varchar(100)
的数据类型,但每当我尝试将值插入cinemaName
时,就会发生以下错误:
INSERT语句与FOREIGN KEY约束冲突" FK__HallSched__cinem__61316BF4"。冲突发生在数据库" MovieAssignment2",table" dbo.Cinema",column' CinemaName'。
答案 0 :(得分:3)
这不是数据长度的问题,而是FOREIGN KEY constraint
的问题。您正在尝试添加cinemaName
表中没有的Cinema
。
正如我在创建脚本中看到的那样,您在列Cinema
上有一个包含表cinemaName
的外键,因此您需要首先将相关数据添加到Cinema
表。
修改
你也有foreign key (hallNo, cinemaName) references Hall
所以,基本上你也需要在这里添加相关数据。我打赌你在Hall
表上也有相同的参考。
在我看来,这是一个非常糟糕的设计。最好拥有Cinema
表,对于每部电影,您将拥有可以在另一个表中使用的id
(f.e。id integer identity (1,1) not null
)。因此,您不必在所有表格中存储电影全名。