网站运营方案怎么写?,什么是销售型网站,阿里云域名出售,Wordpress仿制网站PostgreSQL和 MySQL数据库还是有一定的区别。
下面了解一下 PGSQL的主键序列。
一、主键
1、系统自带主键序列
在 PostgreSQL 中#xff0c;GENERATED BY DEFAULT 和 GENERATED ALWAYS 是用于定义自动生成的列#xff08;Generated Column#xff09;的选项。一般可作用…PostgreSQL和 MySQL数据库还是有一定的区别。
下面了解一下 PGSQL的主键序列。
一、主键
1、系统自带主键序列
在 PostgreSQL 中GENERATED BY DEFAULT 和 GENERATED ALWAYS 是用于定义自动生成的列Generated Column的选项。一般可作用在主键上。
GENERATED ALWAYS 表示该列是自动生成的并且始终使用自动生成的自增值。如果你提供了一个值不管这个值是否存在与表中插入都会报错。GENERATED BY DEFAULT 表示该列是自动生成的可以使用你提供的值如果你没有提供值则会生成一个默认值。需要注意使用它创建表做主键时手动插入显示指定了ID值不管是否从1开始后面继续接着 不显示指定id值系统总是从 1开始。会出现前面创建的id值已存在的重复。
实操总结
一般情况我们指定主键ID为 GENERATED ALWAYS类型。不管你使用 GENERATED ALWAYS还是 GENERATED BY DEFAULT类型或者两者类型来回切换只要你显示插入ID值时PostgreSQL的自动生成ID都不会更新除非你手动修改序列值。所以插入SQL不要显示指定ID值。
2、序列值
2.1 查看序列的当前值
在 PostgreSQL 中如果你使用 GENERATED BY DEFAULT 或 GENERATED ALWAYS 选项来定义一个自动生成的 ID 字段而且没有显式地指定序列的名称PostgreSQL 将会自动为该列生成一个名为 table_name_column_name_seq 的默认序列名称其中
table_name 是表的名称column_name 是自动生成 ID 的列名。
使用下面 SQL 查询语句来查看序列的当前值
SELECT last_value FROM your_table_name_your_column_name_seq;-- 比如查看用户表id序列值
SELECT last_value FROM user_id_seq;也可以通过 Navicat的工具栏中的其他查看所有序列 2.2 修改序列值
要修改当前序列的值可以使用 PostgreSQL 中的 SETVAL 函数。
SELECT setval(your_sequence_name, new_value);-- 比如user_id_seq序列值改为15下次插入时id16
SELECT setval(user_id_seq, 15);– 求知若饥虚心若愚。