我試圖將新的文本書記錄插入到數據庫中。我有一個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