2014-11-25 148 views

回答

0

请参阅documentation

递增值对象的类型

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

谢谢克米特。 Vertica是否包含像SQL Server中的NEWID()这样的函数? – San 2014-11-25 09:29:59

+0

@San不,它不。请参阅文档中的序列。 – Kermit 2014-11-25 13:08:05

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()你正在寻找的等价物。

+0

感谢Guillaume。 – San 2014-11-26 07:03:59

+0

@San如果此答案对您有所帮助,请考虑将其标记为已接受的答案。 – Kermit 2014-12-23 13:20:40