您现在的位置是:首页 > 博客网站制作 > CSS3|Html5CSS3|Html5

在PostgreSQL中设置表中某列值自增或循环方式

杨青青2022-02-20【CSS3|Html5】人已围观

简介这篇文章主要介绍了在PostgreSQL中设置表中某列值自增或循环方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。在postgresql中,设置已存在的某列(num)值

这篇文章主要介绍了在PostgreSQL中设置表中某列值自增或循环方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。

在postgresql中,设置已存在的某列(num)值自增,可以用以下方法:

//将表tb按name排序,利用row_number()over()查询序号并将该列命名为rownum,创建新表tb1并将结果保存到该表中
createtabletb1as(select*,row_number()over(orderbyname)asrownumfromtb);
//根据两张表共同的字段name,将tb1中rownum对应值更新到tb中num中
updatetbsetnum=(selecttb1.rownumfromtb1wheretb.name=tb1.name);
//判断表tb1的存在并删除表
droptableifexiststb1;

在postgresql中,循环设置已存在的某列(num)值为0-9,可以用以下方法:

//将表tb按name排序,利用row_number()over()查询序号并将该列命名为rownum,创建新表tb1并将结果保存到该表中
createtabletb1as(select*,row_number()over(orderbyname)asrownumfromtb);
//根据两张表共同的字段name,将tb1中rownum对应值更新到tb中num中,由于为0-9循环自增,则%10
updatetbsetnum=(selecttb1.rownumfromtb1wheretb.name=tb1.name)%10;
//判断表tb1的存在并删除表
droptableifexiststb1;

其它:附录一个postgresql循环的写法(与上文无关)

do$$
declare
v_idxinteger:=0;
begin
whilev_idx<10loop
updatetbsetnum=v_idx;
v_idx=v_idx+1;
endloop;
end$$;

补充:postgreSQLSQL语句创建自增表

方法一:postgreSQL通过将字段类型设置为serial来将表设计为自增表

CREATETABLEt_achievement_directory(
idserial8PRIMARYKEY,
directory_namevarchar(255)COLLATE"pg_catalog"."default",
pidint8,
modify_timetimestamp(6)
)
;

方法二:GENERATEDBYALWAYSASIDENTITY或GENERATEDBYDEFAULTASIDENTITY

1idint8NOTNULLGENERATEDBYDEFAULTASIDENTITY

1idint8NOTNULLGENERATEDALWAYSASIDENTITY

这两种方式的区别在于:

generatedalwaysasidentity总是按照(STARTWITH1INCREMENTBY1)的方式插入数据,并维护索引。即不允许用户向id列指定数据插入。

但是generatedbydefaultasidentity则是在用户不指定id列值的情况下按照(STARTWITH10INCREMENTBY10)方式插入数据,如果用户指定,则依然按照指定的值插入。

Tags:

很赞哦! ()

文章评论

站点信息

  • 建站时间:2011年01月12日
  • 网站程序:帝国CMS7.5
  • 主题模板《今夕何夕》
  • 文章统计625篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们