因此,我的问题是"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
);
创建"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';
问题在于,login
应该唯一的列实际上在这两个表中分别是唯一的,而不是唯一的“一起”。我的意思是,如果我"USER"
用login
'temp'将一行添加到表中,然后用相同的内容添加到“ STUDENT”中,则login
我的表“ USER”中将获得两行,并且登录名是“ temp”并且没有错误。
另一方面,id
自动递增的column效果很好:in对两个表都有一个“序列”。
如何在表“ USER”和“ STUDENT”的“联合”中保存唯一属性?
不幸的是你不能。该文档甚至提到这是表继承的重要限制。
您可能只想拥有两个独立的表,并为赋予student
唯一的外键user
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句