SQL 尝试在 CockroachDb 中使用 GENERATED BY DEFAULT AS IDENTITY 时出错

SQL error when trying to use GENERATED BY DEFAULT AS IDENTITY in CockroachDb

我正在尝试创建一个简单的 table auto 自动生成的身份密钥,但 Cockroachdb 抛出关键字 GENERATED 的语法错误。有什么我想念的吗?

CREATE TABLE IF NOT EXISTS "users"
(
    "id" bigint GENERATED BY DEFAULT AS IDENTITY NOT NULL,
    "age" bigint NOT NULL, 
    "name" varchar NOT NULL DEFAULT '', 
    "email" varchar NOT NULL, 
    PRIMARY KEY("id")
);

CockroachDB 似乎将 SERIAL 用于此目的:

"id" serial8 primary key,

请注意,由于 Cockroach 是一个分布式数据库,这会引入争用,并且 SERIAL 不建议将唯一 ID 分配给行。

您可能想改用 unique_rowid。它是按时间顺序排列的。我已经成功地将它用于流式数据摄取应用程序。

如果您的应用程序执行大量并发插入,您可能会使用 uuid_v4。它是无序的,但不会减慢并发连接上的插入速度。