gpt4 book ai didi

sql - 如何获得 "inherit"UNIQUE 属性?

转载 作者:行者123 更新时间:2023-11-29 12:00:03 25 4
gpt4 key购买 nike

所以,我的问题是我的数据库中有一个名为 "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 列本应是唯一的,但实际上在这两个表中都是唯一的,而不是“一起”唯一的。我的意思是,如果我使用 login 'temp' 在表 "USER" 中添加一行,然后使用相同的 login< 在“STUDENT”中添加一行,我将在我的表“USER”中得到两行具有相同登录名“temp”并且没有错误。

另一方面,自增列 id 效果很好:两个表都有一个“序列”。

我应该如何保存表“USER”和“STUDENT”的“联合”中的唯一属性?

最佳答案

不幸的是,你不能。该文档甚至将其称为 significant limitation具有表继承。

您可能只想拥有两个独立的表,并为 student 提供一个唯一的外键给 user

关于sql - 如何获得 "inherit"UNIQUE 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24855206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com