我试图将新的文本书记录插入到数据库中。我有一个Course
表,列ID
(PK),CourseID
,CourseTitle
。尝试将记录插入到表中错误FK T-SQL
textBook
表(所有列,ID
(PK))是多对多的关系,所以多个课程可以有相同的书籍,课程也可以有多个不同的书籍。
当我尝试使用C#将新的教科书插入到我的数据库中时,出现外键错误。 Course
表是父项,Textbook
表是子项。两个表中的ID列都被设置为标识和自动增量。 ID是我的textBook
表中引用Course
表的我的外键。
这是我的中间表。
CREATE TABLE [dbo].[BookCourse]
(
[cID] INT NOT NULL Unique,
[BookID] INT NOT NULL Unique,
[BookCourseID] INT NOT NULL,
CONSTRAINT [PK_BookCourse] PRIMARY KEY ([BookCourseID])
)
这里是我的课本表
CREATE TABLE [dbo].[textBooks] (
[thirteenISBN] VARCHAR (255) NOT NULL,
[CourseID] VARCHAR (50) NOT NULL,
[BookTitle] VARCHAR (255) NULL,
[Ancillary] VARCHAR (255) NULL,
[BookActive] VARCHAR (20) NULL,
[ActiveDate] VARCHAR (50) NULL,
[InactiveDate] VARCHAR (50) NULL,
[Author] VARCHAR (255) NULL,
[Imprint] VARCHAR (100) NULL,
[Publisher] VARCHAR (100) NULL,
[EditionAndDate] VARCHAR (120) NULL,
[tenISBN] VARCHAR (255) NULL,
[VendorISBN] INT NULL,
[ebookAvailable] VARCHAR (50) NULL,
[eISBN] VARCHAR (255) NULL,
[Notes] VARCHAR (255) NULL,
[BookID] INT IDENTITY (1, 1) NOT NULL,
CONSTRAINT [PK_textBooks] PRIMARY KEY CLUSTERED ([BookID] ASC),
CONSTRAINT [FK_textBooks_ToTable] FOREIGN KEY ([BookID]) REFERENCES [BookCourse]([BookID])
);
这是我的课程表
CREATE TABLE [dbo].[Course] (
[CourseID] VARCHAR (50) NOT NULL,
[CourseTitle] VARCHAR (255) NULL,
[cID] INT IDENTITY (1, 1) NOT NULL,
CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED ([cID] ASC),
CONSTRAINT [FK_Course_ToTable] FOREIGN KEY ([cID]) REFERENCES [BookCourse]([cID])
);
表适配器与插入:
JUTDMSTableAdapters.textBooksTableAdapter bookTableAdapter;
bookTableAdapter = new JUTDMSTableAdapters.textBooksTableAdapter();
JUTDMSTableAdapters.CourseTableAdapter courseTableAdapter;
courseTableAdapter = new JUTDMSTableAdapters.CourseTableAdapter();
courseTableAdapter.Insert(CourseID: txtCourseID.Text, CourseTitle: txtCourseTitle.Text);
bookTableAdapter.Insert(thirteenISBN: txt13ISBN.Text, CourseID: txtCourseID.Text, BookTitle: txtBookTitle.Text, Ancillary: txtAncillary.Text,
BookActive: txtBookActive.Text, ActiveDate: txtActiveDate.Text, InactiveDate: txtInactiveDate.Text, Author: txtAuthor.Text,
Imprint: txtImprint.Text, Publisher: txtPublisher.Text, EditionAndDate: txtEditionDate.Text,
VendorISBN: vendISBN, tenISBN: txt10ISBN.Text, ebookAvailable: txtEBookAvailable.Text, eISBN: txtEISBN.Text, Notes: txtNotes.Text);
我在Course
表适配器想通插件ERT我就不必添加CID栏看到它是自动递增,但我得到这个错误:
Additional information: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Course_ToTable". The conflict occurred in database "F:\HUTDMS V-2.0\HUTDMS V-2.0\APP_DATA\HUTDMS.MDF", table "dbo.BookCourse", column 'cID'.
的BookID教科书中的表是自动增量 CID的课程表是自动增量 BookCourseID在BookCourse表是自动增量。
您能澄清表格结构吗?提供所有相关表格的完整创建脚本,因为提供的描述很混乱。 – Anton
我使用设计视图在本地数据库的Visual Studio中创建了表。两张桌子,一个有课程信息,另一个只是书的特点。 (isbn,有效日期,无效日期,电子书可用等...) – Norque
它并不重要,你创建它。例如。如果您将对象部署到SQL Server,则可以通过SSMS轻松编写脚本。根据您提供的信息,表格设计不正确。对于多对多的关系,您必须使用三个表格,书桌,课程表和中间表 - BookCourse表。您首先将书籍添加到书籍表中,然后将课程添加到课程表格中,最后将该对(CourseID,BookID)添加到BookCourse表格中。 – Anton