前の質問のテーブルに基づいて、INSERT
最初に独立したテーブル (またはベース テーブル) に記録する必要があります。これらのテーブルの一部はevent
、semester
、などです。外部キー制約が定義されていないMajor_Minor
ため、これらは独立したテーブルと呼ばれます。
独立したテーブルに挿入するサンプル クエリ、
-- INSERTING records on table event
INSERT INTO event (ID, event_description, event_datetime) VALUES
(1, 'hello', NOW()),
(2, 'world', NOW()),
(3, 'stack', NOW()),
(4, 'overflow', NOW());
-- INSERTING records on table semester
INSERT INTO semester (ID, SEMESTER_NAme) VALUES
(1, 'First Semester'),
(2, 'Second Semester'),
(3, 'Summer');
-- INSERTING records on table Major_Minor
INSERT INTO Major_Minor (ID, Major_Minor_Name) VALUES
(1, 'Math'),
(2, 'Science'),
(3, 'English');
-- INSERTING records on table class
INSERT INTO class (ID, class_name) VALUES
(1, 'Alpha'),
(2, 'Beta'),
(3, 'Gamma'),
(4, 'Omega');
INSERT
レコードが挿入された後、従属テーブルを使用できるようになりました。これらは、外部キー制約が定義されているため、従属テーブルと呼ばれます。他のテーブルに存在しない特定のフィールドに値を追加することはできません。従属テーブルの例はMajor_Class_br
、テーブル、
-- INSERTING records on table Major_Class_br
INSERT INTO Major_Class_br (ID, Class_ID, Major_Minor_ID) VALUES
(1,1,1),
(2,1,2),
(3,1,3),
(4,2,1),
(5,2,1),
(6,4,2);
ご覧のとおり、Class_ID
との値はMajor_Minor_ID
すでにテーブルに存在していました:class
とMajor_Minor
テーブルMajor_Class_br
はそれらに依存しているためです。詳細を説明するために、値がまだテーブルにClass_ID
存在しない以下のクエリを実行してみてください。Class
INSERT INTO Major_Class_br (ID, Class_ID, Major_Minor_ID) VALUES (7,5,2);
このエラーが表示されます
スキーマの作成に失敗しました: 子行を追加または更新できません: 外部キー制約が失敗しました ( databaseName
. major_class_br
, CONSTRAINT
cc_fk1
FOREIGN KEY ( Class_ID
) REFERENCES class
( ID
)):