postgresql给已有的表设置主键自动增长
时间: 2023-10-20 11:19:05 浏览: 60
要给已有的表设置主键自动增长,需要进行以下步骤:
1. 首先,在已有的表中添加一个新的主键列,例如id列:
```sql
ALTER TABLE table_name ADD COLUMN id serial PRIMARY KEY;
```
2. 为了确保id列的值自动增加,需要将其设置为序列的默认值:
```sql
ALTER SEQUENCE table_name_id_seq OWNED BY table_name.id;
```
3. 最后,将现有的数据与新的id列关联起来:
```sql
SELECT setval('table_name_id_seq', (SELECT MAX(id) FROM table_name));
```
这样,已有的表就被成功地设置了主键自动增长。
相关问题
postgresql 查询有主键的表
你可以使用以下SQL语句查询拥有主键的表:
```sql
SELECT table_name
FROM information_schema.tables
WHERE table_schema='public'
AND table_type='BASE TABLE'
AND table_name IN (SELECT table_name
FROM information_schema.table_constraints
WHERE constraint_type='PRIMARY KEY');
```
这个查询将会返回所有在public架构下,拥有主键的表的名称。请注意,如果你的表不在public架构下,你需要将上面的查询中的table_schema参数修改成你的架构名称。
PostgreSQL设置主键自增、重置主键自增从1开始
要设置主键自增,需要在创建表时使用 SERIAL 数据类型。例如:
```
CREATE TABLE example (
id SERIAL PRIMARY KEY,
name VARCHAR(50)
);
```
这样,每当插入一条数据时,id 字段会自动递增。
如果要重置主键自增从 1 开始,可以使用 ALTER SEQUENCE 命令。例如,如果要将 example 表的 id 序列重置为从 1 开始,可以执行以下命令:
```
ALTER SEQUENCE example_id_seq RESTART WITH 1;
```
其中,example_id_seq 是自动生成的序列名称。可以通过查询表的元数据来获取它的名称:
```
SELECT column_name, column_default
FROM information_schema.columns
WHERE table_name = 'example' AND column_name = 'id';
```
注意,重置序列可能会导致与该表有关联的其他表的数据完整性受到影响,因此在执行此操作之前请确保已经备份了数据。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)