a.k*_*kov 4 sql postgresql inheritance
所以,我的问题是"USER"
我的数据库中有一个名为 的表,另一个表"STUDENT"
继承自它,再加上一些更具体的字段。
创建"USER"
看起来像:
CREATE TABLE IF NOT EXISTS "USER"
(
id BIGSERIAL PRIMARY KEY,
login CHARACTER VARYING(64) UNIQUE NOT NULL,
password CHARACTER VARYING(32) NOT NULL DEFAULT 'pass',
name TEXT NOT NULL,
email TEXT,
role CHARACTER VARYING(32) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
创建"STUDENT"
外观,例如:
CREATE TABLE IF NOT EXISTS "STUDENT"
(
state TEXT,
hire_date DATE,
english_level TEXT,
CONSTRAINT student_pkey PRIMARY KEY (id),
CONSTRAINT student_login_key UNIQUE(login)
) INHERITS ("USER");
ALTER TABLE "STUDENT" ALTER COLUMN role SET DEFAULT 'stud';
Run Code Online (Sandbox Code Playgroud)
问题在于login
,应该是唯一的列实际上在这两个表中分别是唯一的,但“在一起”却不是唯一的。"USER"
我的意思是,如果我使用“temp”向表中添加一行login
,然后使用相同的行向“STUDENT”中添加一行login
,我将在表“USER”中得到两行,具有相同的登录名“temp”并且没有错误。
另一方面,id
自动增量的column 效果很好:in 两个表都有一个“序列”。
我应该如何保存表“USER”和“STUDENT”的“联合”中的唯一属性?