私は、学生テーブルと教師テーブルによって継承された人物テーブルを持っていると言います。私は学生INTO INSERTと教師INTO INSERTを行うと、例えば人テーブル(P_ID)の主キーを指定した場合プライマリキー制約が設定されているにもかかわらず、ベーステーブルの重複レコードが原因でSQLテーブル継承が発生する
私は私の人々のテーブルに2つの重複するレコードを巻くINSERT INTO student(P_Id, LastName, FirstName, StudentNumber)
VALUES (1, 'Jones', 'Casey', 'SID0001');
INSERT INTO teacher(P_Id, LastName, FirstName, FacultyNumber)
VALUES (1, 'Jones', 'Casey', 'JONES0001');
(P_IDは私の主キーです人のテーブルで)、そのテーブルの制約を考慮せずに、サブテーブルが人のテーブルに挿入を行っているように見えます。 peopleテーブルの主キー制約が重複レコードの作成を妨げてはいけませんか?
人のテーブルに挿入される前に起動するトリガを使用してこの問題を解決すると考えましたが、既に存在するP_Idをチェックします。しかし私はそれが私にそのようなことをさせないようにするか、またはサブテーブルにレコードをインテリジェントに作成したいのですか
これを実行した後、生徒のテーブルに変更を加えて教師のテーブルに反映させますか?ここで
は、上記のINSERT文が唯一の私は、彼らが作成され、これらのテーブルでは動作しません理解例与えることだった文を作成されています
CREATE TABLE people
(
people_id integer NOT NULL,
last_name character varying NOT NULL,
first_name character varying NOT NULL,
middle_name character varying,
gender character varying NOT NULL,
date_of_birth date,
ssn character varying,
pref_language character varying,
CONSTRAINT people_pkey PRIMARY KEY (people_id)
)
CREATE TABLE student
(
-- Inherited from table people: people_id integer NOT NULL,
-- Inherited from table people: last_name character varying NOT NULL,
-- Inherited from table people: first_name character varying NOT NULL,
-- Inherited from table people: middle_name character varying,
-- Inherited from table people: gender character varying NOT NULL,
-- Inherited from table people: date_of_birth date,
-- Inherited from table people: ssn character varying,
-- Inherited from table people: pref_language character varying,
student_id integer NOT NULL,
race character varying(80),
ethnicity character varying(80),
employer character varying(80),
school character varying(80),
pref_location character varying(80),
CONSTRAINT student_pkey PRIMARY KEY (student_id)
)
INHERITS (people)
CREATE TABLE teacher
(
-- Inherited from table people: people_id integer NOT NULL,
-- Inherited from table people: last_name character varying NOT NULL,
-- Inherited from table people: first_name character varying NOT NULL,
-- Inherited from table people: middle_name character varying,
-- Inherited from table people: gender character varying NOT NULL,
-- Inherited from table people: date_of_birth date,
-- Inherited from table people: ssn character varying,
-- Inherited from table people: pref_language character varying,
teacher_id integer NOT NULL,
user_name character varying NOT NULL,
"password" character varying NOT NULL,
title character varying,
CONSTRAINT teacher_pkey PRIMARY KEY (teacher_id)
)
INHERITS (people)
CREATE文を投稿できますか? –
あなたは 'student_id'と' student_id'をPRIMARY KEYSにする必要はなく、 'people.people_id'にはFOREIGN KEYSを持つ必要があると思います。 –
ありがとうございます。 – SageMage