我有一个问题,我可以说我有一个由学生表和教师表继承的人员表.如果我执行INSERT INTO学生和INSERT INTO老师并指定人员表(P_Id)的主键,例如
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');
Run Code Online (Sandbox Code Playgroud)
我结束了我的人员表中的两个重复记录(P_Id是我在人员表上的主键),看起来子表正在插入人员表而不考虑该表上的约束.人员表上的主键约束是否应该阻止创建重复记录?
我已经考虑使用触发器解决此问题,该触发器将在人员表上进行插入之前触发,该表将检查已存在的P_Id.但我希望它能阻止我做这些事情,或者我希望它只在子表中智能地创建记录
执行此操作后,如果在学生表中更改LastName并将更改反映到教师表中,则会出现问题吗?
以下是创建语句,上面的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 …Run Code Online (Sandbox Code Playgroud)