Vertica中的全球唯一标识符

时间:2014-11-25 06:50:20

标签: vertica vsql

我将在Vertica数据库中创建一些表,我必须在其中给出全局唯一标识符以唯一地标识每一行。请建议怎么做?

2 个答案:

答案 0 :(得分:0)

请参阅documentation

增量值对象的类型

  • 命名序列是以升序或降序顺序生成唯一编号的数据库对象。当应用程序需要表或表达式中的唯一标识符时,最常使用它们。一旦命名序列返回一个值,它就不会再次返回相同的值。命名序列是独立的对象,虽然您可以在表中使用它们的值,但它们并不从属于它们。
  • 自动增加列值:仅适用于数字列类型的序列。当向表中添加新行时,自动递增序列会自动为该列分配下一个增量序列值。
  • 标识列:仅适用于数字列类型的序列。

答案 1 :(得分:0)

您正在寻找命名序列。您可以对多个表使用相同的序列:

-- 2 tables...
CREATE TABLE tst  (id INT, value varchar(10));
CREATE TABLE tst2 (id INT, value varchar(10));

-- 1 sequence...
CREATE SEQUENCE tst_seq;

-- ... said sequence is used by both tables
ALTER TABLE tst  ALTER COLUMN id set default NEXTVAL('tst_seq');
ALTER TABLE tst2 ALTER COLUMN id set default NEXTVAL('tst_seq');

-- testing...
INSERT INTO tst (value) VALUES ('tst');
INSERT INTO tst2 (value) VALUES ('tst2');

-- success!
=> SELECT * FROM tst;
 id |  value
----+---------
  1 | tst
(1 row)

=> SELECT * FROM tst2;
 id |  value
----+----------
  2 | tst2
(1 row)

然后在表创建过程中使用的NEXTVAL('named_sequence')相当于您要查找的NEWID()