以下语句不起作用:
ALTER TABLE my_table
ALTER COLUMN column_id set default nextval('my_table_column_id_seq');
那么如何将id列更改为自动递增?
错误:
null value in column \"column_id"\ violates non null constraint.
当我插入没有column_id时会发生这种情况。我需要它是自动递增。Postgres版本为12。
我的插入:
INSERT INTO my_table (column2, column3)
VALUES ('rndmstring', 5);
您可以从column_id的现有值的最大值+1开始创建序列:
CREATE SEQUENCE my_table_column_id_seq START WITH <MAX VALUE OF column_id+1>;
在检查此查询后是否>]
SELECT 1 FROM my_table HAVING COUNT(distinct column_id)=COUNT(column_id) AND SUM(CASE WHEN column_id IS NULL THEN 0 ELSE 1 END)= SUM(CASE WHEN column_id IS NULL THEN 1 ELSE 1 END);
对于相关列的值的非空和唯一性返回1,然后使用您现有的命令
ALTER TABLE my_table ALTER COLUMN column_id SET DEFAULT nextval('my_table_column_id_seq');
命令并确保column_id的所有现有值都是唯一的,然后发出:
ALTER TABLE my_table ADD PRIMARY KEY(column_id);
已解决。我在我的端点中将id设置为参数以创建新表。