2016-08-01 57 views
-1
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,出現此錯誤:如果我的數據類型是varchar(100),爲什麼我不能插入少於100個字符的數據?

INSERT語句衝突與外鍵約束「FK__HallSched__cinem__61316BF4」 。數據庫「MovieAssignment2」,表「dbo.Cinema」,列'CinemaName'發生衝突。

+9

作爲錯誤說「外鍵約束」。請檢查您插入的值是否存在於Cinema表中 – Squirrel

+2

這是因爲表'cinema'中沒有該名稱的行 –

+2

您是否閱讀過錯誤消息?任何列的內容長度與您得到的錯誤無關... –

回答

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)可用於其他表格。所以你不必在所有表格中存儲電影全名。

相關問題