申し訳ありませんが、私はここでより具体的に説明しなければなりませんでした。したがって、以下はSQLのコードです。コピーしてSQLに貼り付けます。基本的に、私は一緒にリンクされている13テーブルを作成しています。SQL Serverの外部キーエラー2014
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='EventType')
BEGIN
DROP TABLE EventType
END
GO
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='EventLocation')
BEGIN
DROP TABLE EventLocation
END
GO
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='StudentEvent')
BEGIN
DROP TABLE StudentEvent
END
GO
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='Event')
BEGIN
DROP TABLE Event
END
GO
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='CurrentAddress')
BEGIN
DROP TABLE CurrentAddress
END
GO
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='PreviousAddress')
BEGIN
DROP TABLE PreviousAddress
END
GO
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='ContactType')
BEGIN
DROP TABLE ContactType
END
GO
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='Contact')
BEGIN
DROP TABLE Contact
END
GO
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='StudentMajor')
BEGIN
DROP TABLE StudentMajor
END
GO
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='Major')
BEGIN
DROP TABLE Major
END
GO
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='Citizenship')
BEGIN
DROP TABLE Citizenship
END
GO
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='Country')
BEGIN
DROP TABLE Country
END
IF EXISTS (SELECT*FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='Student')
BEGIN
DROP TABLE Student
END
GO
CREATE TABLE Student
(
StudentID int identity PRIMARY KEY,
FirstName varchar (50),
LastName varchar (30)
)
GO
CREATE TABLE Country
(
CountryID int identity PRIMARY KEY,
CountryOfBirth varchar (10),
StudentID int FOREIGN KEY REFERENCES Student(StudentID)
)
GO
CREATE TABLE Citizenship
(
CitizenshipID int identity PRIMARY KEY,
CountryOfCitizenship1 varchar (10),
CountryOfCitizenship2 varchar (10),
StudentID int FOREIGN KEY REFERENCES Student(StudentID),
CountryID int FOREIGN KEY REFERENCES Country(CountryID)
)
GO
CREATE TABLE Major
(
Majorid int identity PRIMARY KEY,
MajorName varchar(30),
GraduatedMajor varchar (30)
)
CREATE TABLE StudentMajor
(
StudentMajorid int identity,
StudentID int FOREIGN KEY REFERENCES Student(StudentID),
MajorID int FOREIGN KEY REFERENCES Major(MajorID)
)
GO
ALTER TABLE StudentMajor
ADD constraint uk_sm UNIQUE (StudentID,MajorID)
CREATE TABLE Contact
(
ContactId int identity PRIMARY KEY,
StudentID int FOREIGN KEY REFERENCES Student(StudentID),
ContactInfo varchar (8),
ContactDate datetime
)
GO
CREATE TABLE ContactType
(
ContactTypeId int identity PRIMARY KEY,
ContactID int FOREIGN KEY REFERENCES Contact(ContactID)
)
GO
CREATE TABLE PreviousAddress
(
PreviousAddressId int identity PRIMARY KEY,
Address1 varchar (50),
Address2 varchar (50),
City varchar (20),
State varchar (20),
Pincode char (10),
StudentID int FOREIGN KEY REFERENCES Student(StudentID)
)
GO
CREATE TABLE CurrentAddress
(
CurrentAddressId int identity PRIMARY KEY,
Address1 varchar (50),
Address2 varchar (50),
City varchar (20),
State varchar (20),
Pincode char (10),
StudentID int FOREIGN KEY REFERENCES Student(StudentID)
)
GO
CREATE TABLE EventType
(
EventTypeID int identity PRIMARY KEY
)
CREATE TABLE Event
(
EventId int identity PRIMARY KEY,
EventDate datetime,
EventTitle varchar (50),
EventTime datetime,
EventTypeID int
)
GO
ALTER TABLE Event
ADD constraint fk_Event
FOREIGN KEY (EventTypeID) REFERENCES EventType(EventTypeID)
CREATE TABLE StudentEvent
(
StudentEventId int identity PRIMARY KEY,
StudentID int FOREIGN KEY REFERENCES Student(StudentID),
EventID int FOREIGN KEY REFERENCES Event(EventID),
Comment varchar(2000)
)
GO
CREATE TABLE EventLocation
(
EventLocationId int identity PRIMARY KEY,
EventCountry varchar (50),
EventState varchar (50),
EventAddress1 varchar (100),
EventAddress2 varchar (100),
EventCity varchar (50),
EventPincode char (10),
EventID int FOREIGN KEY REFERENCES Event(EventID)
)
GO
上記のコードの問題は完全にはじめて実行されますが、2回目に実行するとエラーが発生します。
オブジェクト 'EventType'は、FOREIGN KEY制約によって参照されているため、削除できませんでした。
メッセージ2714、レベル16、状態6、行132
データベースには「EventType」という名前のオブジェクトが既に存在します。メッセージ4902、レベル16、状態1、行143
"Event"オブジェクトが存在しないか、権限がないため、オブジェクト "Event"が見つかりません。メッセージ1767、レベル16、状態0、行153
外部キー 'FK__EventLoca__Event__6265874F'は無効なテーブル 'イベント'を参照します。 メッセージ1750、レベル16、状態0、行153制約またはインデックスを作成できませんでした。以前のエラーを参照してください。
外部キーをコードする良い方法がありますか、私は何か間違っていますか?
ありがとうございました!
最初に 'EventType'テーブルを作成してからFKを追加してください – Sami
SQL Serverは、外部キーが参照されている場合にテーブルを削除することを許可しません。テーブルを参照する外部キーがすべて破棄された後*外部キーによって参照されるテーブルが削除されるように、テーブルをドロップする順序を変更するオプションがある場合は1つです。 (別のオプションは、最初に外部キーを削除することです、そして、テーブルは任意の順序で削除することができます。) – spencer7593
私はオプション1を使うつもりですが、SQLでDROPを学ぼうとするのは初めてのことです。あなたが私にDROPステートメントのオーダーを見せて教えてくれればいいと思う。 – biggboss2019