oracle id最大值,Oracle小记之取最大值作为id

boss布置个任务,主要内容是对标识表和标识类型表进行CRUD的操作。没有难度的敲代码,但是有两个地方我想记录下来的。

b2e4a1a115fa389e11327973e3e9f512.png

首先,先把表结构给出。

标识表(REPOT_BS):

Name      Type           Nullable Default Comments

--------- -------------- -------- ------- --------

ID        NUMBER(12)                      标识类型id

NAME      VARCHAR2(128)  Y                标识类型名称

PARENT_ID NUMBER(12)     Y                标识类型父id

MARK      VARCHAR2(2000) Y                备注

标识类型(REPOT_CATEGORY):

Name        Type           Nullable Default Comments

----------- -------------- -------- ------- ----------------

ID          NUMBER(12)                      标识id

NAME        VARCHAR2(128)  Y                名称

MARK        VARCHAR2(2000) Y                备注

CATEGORY_ID NUMBER(12)     Y                类型id

STATE       CHAR(1)        Y                1启用 0未启用 启用后不能删除

好,第一点是,插入数据时, 取标识表的最大值+1作为id。SQL:

INSERT INTO  REPOT_BS  (ID,NAME,MARK,CATEGORY_ID,STATE) VALUES ((SELECT NVL(MAX(ID),0)+1 FROM REPOT_BS),#name#,#mark#,#categoryId#,#state#)

其中,红色部分就是 取表示表的最大值+1作为id, max是最大值函数,NVL(A,B)函数表示加入A的值为null,那就返回B,否则返回A。max和nvl都是Oracle的系统函数。

注: oracle是不分大小写的。- _ -

第二点 : 判断某标识类型下的是否有启动的标识。SQL:

select count(*) from (select 1 from ZY_SYS_REPOT_BS B where b.state = '1' and b.category_id = #categoryId#)

如果返回值大于0 ,则该标识类型下有启动的标识,反之小于0,则没有。这句SQL是在删除标识类型的时候,要预先判断的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29635878/viewspace-1162453/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值