• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    DB2 自动递增字段实现方法

    发布者: 福建二哥 | 发布时间: 2025-6-18 12:42| 查看数: 31| 评论数: 0|帖子模式

    使用这个一般是用作识别码的,当做定义表格的主键。generated语法则可以自定义你想怎么产生这个值的策略。
    语法如下:
    column definition generated {always | by default}
    as {identity identity rules | using your rules}
    我们先删掉上次我们建立的表格:
    db2 => drop table nomination
    然后再创建一个表格:

    Create table nomination
    (
    nominationID BIGINT Not Null Primary Key generated always as identity,
    nominee char(6) Not Null,
    nominator char(6) Not Null,
    reason VARCHAR(250),
    nomdate date Not Null,
    categoryid INTEGER Not Null,
    check (nominee != nominator) not enforced enable query optimization,
    Foreign Key CategoryExists (categoryid)
    references category (categoryid) on delete restrict
    )

    注意黑体字,以后我们就不能使用insert或者update来显式的指定它的值了。
    而DB2中的identity也提供了多种策略,具体的可以去查DB2手册,我们举例如下:
    我们先删掉上次我们建立的表格:
    db2 => drop table category
    然后建立表单

    Create table category
    (
    CategoryID INTEGER Primary Key Generated Always as Identity
    (Start With 1 Increment by 1 minvalue 0 maxvalue 999999999
    no cycle cache 5 no order),
    CateogryName VARCHAR(50) Not Null,
    Eligibility VARCHAR(250)
    )

    黑体字中identity中的语句你都能在DB2的手册中查到,都是自然语言一看就懂了。
    有时候你并不只想去做数字的填充,你可能还想处理一些字母,那么下边这个转换大写的例子就是给你的:
    db2 => alter table category add column
    UpperCatName VARCHAR(50) generated always as (upper(CategoryName))
    关于这些在DB2的文档里都有具体说明。
    来源:https://www.jb51.net/article/21174.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表