postgresql 修改表属性,包括新增、修改、删除列

 

直接上代码:

1、先创建一个表:

1 create table user(
2  uid integer not null,
3 username character varying(50) NOT NULL,
4 email character varying(100),
5 tel character varying(50)
6 
7 )

 

2、然后发现需要将uid 类型修改为序列类型,但是postgreql不支持将integer修改为serial,曲线救国做法如下:

--新建一个字段uid1

alter table user add column uid1 serial;

--删除老字段uid

alter table user drop column uid;

--修改uid1字段名称为uid

alter table user rename uid1 to uid;

--增加主键

alter table user add primary key (uid);

  

 

转载于:https://www.cnblogs.com/htlee/p/9187438.html

在SQL中,如果你想在一个现有的中添加一个新的 `id` 并为其赋值为连续的整数(如1, 2, 3...),你可以按照以下几个步骤来操作: 首先,你需要向中添加新的 `id` 。假设我们的名为 `my_table`,可以使用如下命令添加该: ```sql ALTER TABLE my_table ADD id INT; ``` 接下来,为了让这能够自动递增并唯一标识每一行数据(类似于主键的功能),我们可以利用数据库提供的特性。不过需要注意的是,并不是所有的数据库系统都直接支持对已有数据填充这种序值的方式。这里给出一种常见的解决办法,即通过设置AUTO_INCREMENT属性(适用于MySQL等)或者利用窗口函数ROW_NUMBER()(对于更先进的SQL Server、PostgreSQL版本)。下面是基于不同DBMS环境下的解决方案之一 - 针对MYSQL为例: 1. 先删除已有的非自增ID字段(若有必要): ```sql ALTER TABLE my_table DROP COLUMN id; ``` 2. 然后再重建包含自增值特性的新ID字段: ```sql ALTER TABLE my_table ADD id INT AUTO_INCREMENT PRIMARY KEY; ``` 如果你不想更改原来的格结构,只是单纯想插入一些顺序编号到现有记录里面去,则可以根据实际情况采取类似下面这样的更新语句(SQL Server / PostgreSQL可用): ```sql WITH cte AS ( SELECT *, ROW_NUMBER() OVER () AS rn FROM my_table ORDER BY some_column -- 根据需要选择排序依据 ) UPDATE my_table SET id = cte.rn FROM cte WHERE my_table.some_key = cte.some_key; ``` 注意替换`somme_column`为你希望作为排基准的实际字段名称;以及把每个实例里的primary key关联起来以匹配正确的行进行修改。 最后提醒一点:上述过程可能会因为事务锁等原因影响性能或导致并发问题,请务必做好备份并在生产环境中小心实施!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值