簡體   English   中英

將外鍵從多對多關系導出到另一個表sql

[英]Exporting foreign key from many to many relationship to another table sql

我有桌子

CREATE TABLE [dbo].[CoursesOfferedToBatches] (
    [CourseId] VARCHAR (50) NOT NULL,
    [Batch]    INT          NOT NULL,
    PRIMARY KEY CLUSTERED ([Batch] ASC, [CourseId] ASC),
    CONSTRAINT [FK_OfferedCourses_ToCourses] FOREIGN KEY ([CourseId]) REFERENCES [dbo].[Courses] ([Id]),
    CONSTRAINT [FK_CoursesOfferedToBatches_ToBatches] FOREIGN KEY ([Batch]) REFERENCES [dbo].[Batches] ([Id])
);

當我將CourseId作為外鍵從上表導出到下表時,如下圖所示,它給出了下表所示的錯誤

CREATE TABLE [dbo].[StudentsRegisterToCoursesOffered]
(
    [StudentId] UNIQUEIDENTIFIER NOT NULL , 
    [CourseId] VARCHAR(50) NOT NULL, 
    PRIMARY KEY ([CourseId], [StudentId]), 
    CONSTRAINT [FK_StudentsRegisterToCoursesOffered_ToStudents] FOREIGN KEY ([StudentId]) REFERENCES [Students]([StudentId]), 
    CONSTRAINT [FK_StudentsRegisterToCoursesOffered_ToCoursesOffered] FOREIGN KEY ([CourseId]) REFERENCES [CoursesOfferedToBatches]([CourseId])
)

錯誤:

由於驗證錯誤,更新無法繼續。 請更正以下錯誤,然后重試。

SQL71516 ::引用表'[dbo]。[CoursesOfferedToBatches]'不包含與外鍵中的引用列列表匹配的主鍵或候選鍵。 如果引用的列是計算列,則應保留該列。

我的問題到此結束,但是為了添加參考,我添加了所有相關表格:

CREATE TABLE [dbo].[Courses] (
    [Id]   VARCHAR (50)  NOT NULL,
    [Name] VARCHAR (100) NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);


CREATE TABLE [dbo].[Students] (
    [StudentId]      UNIQUEIDENTIFIER NOT NULL,
    [DepartmentName] VARCHAR (50)     NOT NULL,
    [Address]        VARCHAR (250)    NULL,
    [TwitterLink]    VARCHAR (100)    NULL,
    [FacebookLink]   VARCHAR (100)    NULL,
    [MemberSince]    DATETIME         NULL,
    [ProfileViews]   BIGINT           DEFAULT ((0)) NULL,
    [CNIC]           CHAR (15)        NULL,
    [AboutMe]        VARCHAR (3000)   NULL,
    PRIMARY KEY CLUSTERED ([StudentId] ASC),
    CONSTRAINT [FK_Students_ToStudents] FOREIGN KEY ([StudentId]) REFERENCES [dbo].[Users] ([UserId]),
    CONSTRAINT [FK_Students_ToDepartments] FOREIGN KEY ([DepartmentName]) REFERENCES [dbo].[Departments] ([Name])
);


CREATE TABLE [dbo].[Batches] (
    [Id] INT NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

CoursesOfferedToBatches需要具有自己的主鍵,您已將其創建為復合鍵PRIMARY KEY CLUSTERED ([Batch] ASC, [CourseId] ASC) 這是這將是一個外鍵,該化合物鍵StudentsRegisterToCoursesOffered而不僅僅是CourseId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM