- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 PgSQL 9.4.3 服务器设置,之前我只使用公共(public)模式,例如我创建了一个这样的表:
CREATE TABLE ma_accessed_by_members_tracking (
reference bigserial NOT NULL,
ma_reference bigint NOT NULL,
membership_reference bigint NOT NULL,
date_accessed timestamp without time zone,
points_awarded bigint NOT NULL
);
使用 Windows 程序 PgAdmin III,我可以看到它创建了正确的信息和序列。
不过,我最近向同一个数据库添加了另一个名为“test”的模式,并创建了完全相同的表,就像以前一样。
然而这次我看到:
CREATE TABLE test.ma_accessed_by_members_tracking
(
reference bigint NOT NULL DEFAULT nextval('ma_accessed_by_members_tracking_reference_seq'::regclass),
ma_reference bigint NOT NULL,
membership_reference bigint NOT NULL,
date_accessed timestamp without time zone,
points_awarded bigint NOT NULL
);
我的问题/好奇是为什么在 public
模式中 reference
显示 bigserial
但在 test
模式中reference
显示带有 nextval
?
bigint
两者都按预期工作。我只是不明白为什么模式的差异会显示不同的表创建。我意识到 bigint 和 bigserial 允许使用相同数量的整数。
最佳答案
根据documentation on Serial Types 、smallserial
、serial
和 bigserial
不是真正的数据类型。相反,它们是同时创建 sequence 的符号。和列 default value指向那个序列。
我在模式 public
上创建了测试表。命令 psql\d
显示 bigint
列类型。也许这是 PgAdmin 的行为?
我检查了 PgAdmin 源代码。在函数 pgColumn::GetDefinition()
中,它扫描表 pg_depend
以查找自动依赖项,并在找到它时 - 将 bigint
替换为 bigserial
模拟原始表创建代码。
关于PostgreSQL bigserial 和 nextval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31035830/
我正在尝试创建以 Bigserial 数据类型作为主键的 Postgres 表。创建表后,表定义将更改为 bigint NOT NULL DEFAULT nextval('transactions.t
我有一个客户,每年有大约 1100 万条数据记录。我正在使用 bigserial 作为我的 ID。 我的问题是,如果它用完了通常的数字,接下来我该怎么办? 对不起,我是 Postgres 的菜鸟。 最
我有一个使用以下 SQL 创建的 postgres 表: CREATE TABLE mytable ( mytable_id BIGSERIAL NOT NULL, mytable_c
我有一个 PgSQL 9.4.3 服务器设置,之前我只使用公共(public)模式,例如我创建了一个这样的表: CREATE TABLE ma_accessed_by_members_tracking
我无法在 POSTGRES 数据库中插入记录,我希望外键为空。 我的 table : CREATE TABLE sad_avaliado ( id BIGSERI
我是 PostgreSQL 的新手,因为自动递增我们必须使用 BigSerial 或 Serial,所以任何人都可以解释一下我们在创建表时必须使用哪一个。哪一个是最好的,请明智地解释场景。 最佳答案
我正在构建一个必须使用少量现有数据库的应用程序,其中一个 (Postgresql) 使用 BIGSERIAL 作为表中的主键。我的问题是,当我将列添加到 sqlalchemy Base 时,在定义表时
为了在 postgres 中将整数数据类型转换为 bigserial,我运行了以下命令,但它没有更改其数据类型,但它正在更改修饰符 CREATE SEQUENCE id; ALTER TABLE us
我有一个跨两个脚本定义的表,如下所示(我省略了不需要的细节): CREATE TABLE a (id BIGSERIAL NOT NULL PRIMARY KEY); ALTER TABLE IMAG
我正在使用 postgres 和 Hibernate,并且我注意到生成的 id 有一些奇怪的地方。它在序列中产生了巨大的跳跃,我有一个有 1524 行的表,但最高 id 仍然是 602778。 我的
我有一张 table CREATE TABLE users ( id BIGSERIAL NOT NULL PRIMARY KEY, created_at TIMESTAMP DEFAULT
假设我有以下表格。 CREATE TABLE IF NOT EXISTS Game ( GameNr BIGSERIAL PRIMARY KEY, blabla
我正在开发一个将数据存储在 PostgreSQL 数据库中的新应用程序。其他数据类型包括来自某些测量设备的仪表记录。每个客户可能有成百上千台这样的设备,而且通常每天都提供很少的记录。新记录通过简单地删
我希望下面的代码能够创建具有 BIGSERIAL 列类型 id 的表。 @Entity public class NewEntity1 implements Serializable { pr
我正在尝试使用外部数据包装器从其他两个 Postgres 数据库插入 Postgres 数据库中的表。目标是拥有一个独立于源的自动生成主键,因为将有两个以上。 我首先像这样定义表: 目标数据库: cr
当我尝试通过 alter 命令更改表中列的数据类型时... alter table temp alter column id type bigserial; 我明白了 ERROR: type "bi
我想在 Sequelize 模型中使用 PostgreSQL BIG SERIAL 类型作为 id。我该怎么做呢? 我发现当你这样做时,Sequelize 使用了 SERIAL: id: { ty
我的 PostgreSQL 表的 ID 类型为 bigserial ,这意味着它们是在插入行时生成的(因此,INSERT 语句中未提供 id 列的值)。我很难为 找到合适的值我的 XML 映射文件中
在 Postgres , 用 SERIAL 定义一列/ BIGSERIAL 具有三重效果,如 discussed here : 定义一个 int/bigint柱子。 创建一个序列对象来生成自动递增的数
我做了一些研究,但找不到我想要的确切答案。目前我有一个设置为串行的主键列“id”,但我想将其更改为 bigserial 以映射到 Java 层中的 Long。考虑到这是一个现有表,实现此目标的最佳方法
我是一名优秀的程序员,十分优秀!