2016-04-15 40 views
-6
CREATE TABLE Schedule 
(
    Section DATETIME NOT NULL PRIMARY KEY(CourseID, Section, EmployeeID), 
    CourseID VARCHAR(10) REFERENCES Course(CourseID) NOT NULL, 
    EmployeeID VARCHAR(20) NOT NULL REFERENCES Employee(EmployeeID), 
    StartTime TIME NULL, 
    Days DATE NULL, 
    Length TIME NULL 
) 

CREATE TABLE Enrollment 
(
    StudentID INT Primary key (StudentID, CourseID, Section) NOT NULL, 
    CourseID VARCHAR(10) REFERENCES Course(CourseID) NOT NULL, 
    Section DATETIME NOT NULL REFERENCES Schedule(Section) 
) 

2番目のテーブルが作成されませんでした。どこが間違っていましたか?SQL Server 2012:テーブルの作成

+1

あなたはどのようなDBMSを使用していますか?正確なエラーメッセージは何ですか? –

+0

どのデータベースですか?エラーとは何ですか? – OldProgrammer

+0

これはSQL Server 2012で、エラーは 'プライマリまたは候補がありません'という意味の関連する情報がないフォーマットされていないSQLをダンプしました。外部キー 'FK__Enrollmen__Secti__52593CB8'の参照列リストと一致する参照テーブル 'Schedule'のキー。 – Denis

答えて

0

これは、スケジュールテーブル内の主キーを自然/結合キーにしたためです。

代わりにこの目的のためにスタンドアロンの列を作成してみてください。私はその違いを示す下の例を含めました。

CREATE TABLE DBO.PK_TEST (
         Col_A INT NOT NULL 
         ,Col_B INT NOT NULL 
         ,Primary Key(Col_A,Col_B) 
        ) 


Create table DBO.PK_TEST_2 (
          Col_A int NOT NULL 
          ,Col_B int NOT NULL 
          ,Col_C as (cast(Col_A as nvarchar) 
          + cast(Col_B as nvarchar)) PERSISTED NOT NULL 
          ,primary key(Col_C) 
          ) 

enter image description here

関連する問題