【发布时间】:2019-03-20 13:01:27
【问题描述】:
我希望列在每次插入时都具有唯一值。在 SQL 中,我们可以使用自动增量来实现此功能,在 Clickhouse 中,我们可以使用自动增量或其他任何类型来实现此功能吗?我是 Clickhouse 的新手,所以可能存在术语错误。
【问题讨论】:
-
Clickhouse 中没有外键。它不是传统的关系数据库。
标签: sql clickhouse
我希望列在每次插入时都具有唯一值。在 SQL 中,我们可以使用自动增量来实现此功能,在 Clickhouse 中,我们可以使用自动增量或其他任何类型来实现此功能吗?我是 Clickhouse 的新手,所以可能存在术语错误。
【问题讨论】:
标签: sql clickhouse
ClickHouse 中没有自动增量功能。
如果您需要唯一值,请使用 UUID。它works much better for distributed systems 不仅仅是自动递增值
因此您可以简单地生成随机 Uint64 并将其转换为 UUID
SELECT toUUID(rand64());
使用 insert 它看起来与此类似
INSERT INTO t VALUES (toUUID(rand64()), ...);
【讨论】:
ClickHouse 中没有服务器提供的自动增量。
正如其他答案所述,UUID 是要走的路。
改为使用 generateUUIDv4()(请参阅文档 here)
样本输出
SELECT generateUUIDv4();
插入时使用
INSERT INTO t VALUES (generateUUIDv4(), ...);
【讨论】: