【发布时间】:2014-11-25 06:50:20
【问题描述】:
我将在 Vertica 数据库中创建一些表,我必须在该表上提供全局唯一标识符以唯一标识每一行。请建议怎么做?
【问题讨论】:
我将在 Vertica 数据库中创建一些表,我必须在该表上提供全局唯一标识符以唯一标识每一行。请建议怎么做?
【问题讨论】:
请参考documentation:
递增值对象的类型
【讨论】:
您正在寻找一个命名序列。您可以对多个表使用相同的序列:
-- 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()。
【讨论】: