我可以根据三个属性定义主键吗?我正在使用Visual Paradigm和Postgres。
CREATE TABLE answers (
time SERIAL NOT NULL,
"{Users}{userID}user_id" int4 NOT NULL,
"{Users}{userID}question_id" int4 NOT NULL,
reply varchar(255),
PRIMARY KEY (time, "{Users}{userID}user_id", "{Users}{userID}question_id"));
picture可能会澄清问题。
答案 0 :(得分:2)
是的,你可以,就像你展示的那样。(虽然我质疑你对2.和3.专栏的命名。)
来自docs:
“主键也可以约束多个列;语法类似于唯一约束:
CREATE TABLE example (
a integer,
b integer,
c integer,
PRIMARY KEY (a, c)
);
主键表示列或列组可用作表中行的唯一标识符。 (这是主键定义的直接结果。请注意,唯一约束本身不提供唯一标识符,因为它不排除空值。)这对于文档目的和客户端应用程序都很有用。例如,允许修改行值的GUI应用程序可能需要知道表的主键才能唯一地标识行。
一个表最多只能有一个主键(虽然它可以有许多唯一且非空的约束)。关系数据库理论规定每个表必须有一个主键。 PostgreSQL不强制执行此规则,但通常最好遵循它。 “
答案 1 :(得分:0)
是的,你可以。 documentation.中只有这样的例子。但是,我不熟悉您正在使用的括号中的术语。您是否在创建数据库模式之前进行了一些变量评估?
答案 2 :(得分:0)