ITPub博客

首页 > 数据库 > Oracle > Oracle小记之取最大值作为id

Oracle小记之取最大值作为id

Oracle 作者:哇哈哈825 时间:2014-05-16 10:11:43 0 删除 编辑
boss布置个任务,主要内容是对标识表和标识类型表进行CRUD的操作。没有难度的敲代码,但是有两个地方我想记录下来的。


首先,先把表结构给出。


标识表(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博客 ” ,链接:https://blog.itpub.net/29635878/viewspace-1162453/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-04-30

  • 博文量
    43
  • 访问量
    46137