【问题标题】:How to have auto increment in ClickHouse?如何在 ClickHouse 中自动递增?
【发布时间】:2019-03-20 13:01:27
【问题描述】:

我希望列在每次插入时都具有唯一值。在 SQL 中,我们可以使用自动增量来实现此功能,在 Clickhouse 中,我们可以使用自动增量或其他任何类型来实现此功能吗?我是 Clickhouse 的新手,所以可能存在术语错误。

【问题讨论】:

  • Clickhouse 中没有外键。它不是传统的关系数据库。

标签: sql clickhouse


【解决方案1】:

ClickHouse 中没有自动增量功能。

如果您需要唯一值,请使用 UUID。它works much better for distributed systems 不仅仅是自动递增值

因此您可以简单地生成随机 Uint64 并将其转换为 UUID

SELECT toUUID(rand64());

使用 insert 它看起来与此类似

INSERT INTO t VALUES (toUUID(rand64()), ...);

【讨论】:

  • 它不工作。错误给出:DB::Exception:IN 或 VALUES 中的集合元素不是常量表达式:toUUID
  • @Sakezzz 刚刚测试过并且可以工作。提供更多信息以便我提供帮助。
  • 可能在新版本中
  • 在 2018 年 10 月的最新版本中进行了测试(不确定是什么),现在在 v20.12 中进行了测试
【解决方案2】:

ClickHouse 中没有服务器提供的自动增量。

正如其他答案所述,UUID 是要走的路。

改为使用 generateUUIDv4()(请参阅文档 here

样本输出

SELECT generateUUIDv4();

插入时使用

INSERT INTO t VALUES (generateUUIDv4(), ...);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2015-06-26
    • 2020-01-15
    • 2011-09-25
    • 1970-01-01
    相关资源
    最近更新 更多