[英]Is there a way to set AUTO_INCREMENT property on existing table column in Vertica?
假設我有一個簡單的表:
CREATE TABLE user(
id INT NOT NULL PRIMARY KEY,
name VARCHAR(32) NOT NULL,
)
有沒有辦法改變這個表,所以id
將成為AUTO_INCREMENT字段?
我試了以下沒有運氣:
謝謝!
我會嘗試對行進行排名,並將序列用於將來的插入。
\set AUTOCOMMIT 'on'
CREATE TABLE t1 (
val char(1)
);
INSERT INTO t1 VALUES ('a');
INSERT INTO t1 VALUES ('b');
INSERT INTO t1 VALUES ('c');
INSERT INTO t1 VALUES ('d');
CREATE TABLE t2 (
id int,
val char(1)
);
INSERT INTO t2 (val, id)
SELECT val, RANK() OVER (ORDER BY val) as id
FROM t1;
SELECT * FROM t2;
我們得到:
id | val ----+----- 1 | a 3 | c 2 | b 4 | d
成功!
讓我們為將來的插入准備表格:
-- get the value to start sequence at
SELECT MAX(id) FROM t2;
-- create the sequence
CREATE SEQUENCE seq1 START 5;
-- syntax as of 6.1
-- modify the column to add next value for future rows
ALTER TABLE t2 ALTER COLUMN id SET DEFAULT NEXTVAL('seq1');
快速測試:
INSERT INTO t2 (val) VALUES ('e');
INSERT INTO t2 (val) VALUES ('f');
SELECT * FROM t2;
我們得到:
id | val ----+----- 4 | d 2 | b 3 | c 6 | f 1 | a 5 | e
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.