Federico Ponzi Asked: 2014-08-28 09:03:05 +0800 CST2014-08-28 09:03:05 +0800 CST 2014-08-28 09:03:05 +0800 CST 引用另一个 id 字段的 id 字段的类型 772 我在postgresql上。我有一个表用户(id 序列不为空)和另一个表客户端(id)我需要创建一个:外键客户端(id)引用用户(id)。 客户端(id)类型应该是什么?整数还是串行?感谢帮助。 postgresql 1 个回答 Voted Best Answer ypercubeᵀᴹ 2014-08-28T09:09:31+08:002014-08-28T09:09:31+08:00 应该是int。serial引用列和被引用列必须具有相同的数据类型,但是 a引用另一个列没有意义,serial因为序列只是int具有序列提供的自动递增值。 当您将插入第二个引用表(客户端)时,您将希望使用已插入第一个引用表(用户)中的值。您不希望自动提供值,因为这些值可能与您在第一个表中已有的现有值不匹配。 Postgres 关于数字数据类型的文档解释说: 数据类型smallserial和不是真正的类型,serial而bigserial只是用于创建唯一标识符列的符号方便(类似于AUTO_INCREMENT某些其他数据库支持的属性)。在当前实现中,指定: CREATE TABLE tablename ( colname SERIAL ); 相当于指定: CREATE SEQUENCE tablename_colname_seq; CREATE TABLE tablename ( colname integer NOT NULL DEFAULT nextval('tablename_colname_seq') ); ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;
应该是
int
。serial
引用列和被引用列必须具有相同的数据类型,但是 a引用另一个列没有意义,serial
因为序列只是int
具有序列提供的自动递增值。当您将插入第二个引用表(客户端)时,您将希望使用已插入第一个引用表(用户)中的值。您不希望自动提供值,因为这些值可能与您在第一个表中已有的现有值不匹配。
Postgres 关于数字数据类型的文档解释说: