2016-04-15 115 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) 
) 

第二个表未创建,我哪里出错了?SQL Server 2012:创建表

+1

您正在使用什么数据库管理系统?你得到了什么确切的错误信息?你已经倾倒了一堆没有格式化的SQL,并且没有相关的信息,并且说“它没有工作*。 –

+0

什么数据库?什么是错误? – OldProgrammer

+0

它是SQL Server 2012,错误是'没有主数据或候选数据引用表'Schedule'中的键与外键'FK__Enrollmen__Secti__52593CB8'中的引用列表匹配。 – Denis

回答

0

它是因为您将Schedule表中的主键作为自然/组合键。

尝试为此目的创建一个独立列。我在下面的例子中包含了一个显示差异的例子。

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