如何在不删除Postgresql中的值的情况下更新列的数据类型?

时间:2015-10-28 08:39:01

标签: postgresql

我创造了我的桌子犯了一个错误。主键不正确。我删除了约束,现在我的表中没有主键,只有带数据的字段。现在我想再次将此字段设置为auto_increment主键而不会丢失我的数据。我怎么能这样做? 我试过这个:

ALTER TABLE name_table ADD COLUMN name_column serial primary key;

但是有了这个,我正在丢失我的数据并创建一个我不想要的新专栏

3 个答案:

答案 0 :(得分:0)

试试这个

array[lo + i]

答案 1 :(得分:0)

根据我的建议,

  1. 首先在sql或csv或xml中备份数据库或者excel 恢复-能。
  2. 然后从UI或命令
  3. 更改表结构,列数据类型
  4. 然后,如果您桌面上记录的数据丢失或消失, 恢复您的 仅备份数据(不是表的结构)
  5. 之后,您已更改列数据类型并获取所需数据。我希望它能奏效。

答案 2 :(得分:0)

大家好,我正在尝试几种方法,我发现了这个,也许后来有人可以使用:

创建一个sequencez:Sequenz是Postgresql实现生成auto_increment字段的方式。我们有一个auto_increment也是一个主键。不应该是这样,不是规则,但在大多数情况下,auto_increment字段是主键。 创建一个序列是这样的:

CREATE SEQUENCE exemplo_id_seq
    INCREMENT 1 --the increment upgrate will be made 1 + 1
    MINVALUE 1
    MAXVALUE 
    START 1 --the start counting is in 1
    CACHE 1;

此后只是使用NEXTVAL将此序列提供给受影响的字段,如下所示:

ALTER TABLE table_name ALTER COLUMN id SET DEFAULT NEXTVAL("exemplo_id_seq"::regclass);

工作正常而不会丢失旧错误的数据