未显示“生成序列”的顺序? Oracle表格

时间:2018-12-10 15:06:20

标签: oracle oracleforms

execute_query applied to show all records, sequence works fine but not in descending order execute_query用于显示所有记录,顺序工作正常,但不按降序排列

如果有任何方法可以按(“否”,列)中的顺序对数据块进行排序,请提供帮助

create table Citizens_lic
(
No          NUMBER(10)              ,
ID          NUMBER(10)    
constraint      Citizens_ID_pk_1     PRIMARY KEY,
F_Name                  VARCHAR2(32)            ,
M_Name                  VARCHAR2(32)            ,
L_Name                  VARCHAR2(32)            ,
DOB                     DATE                    ,
POB                     VARCHAR2(32)            ,
GENDER                  VARCHAR2(32)            ,
WORK_STATUS             VARCHAR2(32)        ,
Soc_status              VARCHAR2(32)            ,
ISS_DATE                date                    ,
EXP_Date                date                   
)

这是表格,这是顺序:

CREATE SEQUENCE CITIZENS_LIC_NO_SEQ_1
START WITH 1
INCREMENT BY 1

这是触发器:

 CREATE OR REPLACE TRIGGER CITIZENS_LIC_NO_TRIGG_1
 BEFORE INSERT ON CITIZENS_LIC
 FOR EACH ROW
 BEGIN
 SELECT CITIZENS_LIC_NO_SEQ_1.NEXTVAL
 INTO   :new.NO
 FROM   DUAL;
 END;

尝试添加任何值,都可以正常工作,但是当您从“表单”构建器添加值时,它将根据您的鼠标单击更改顺序

另一件事是,当我尝试从表格中删除任何内容时, 序列破坏了顺序,删除的值永远消失了,其序列号也消失了!

might triggers help but I don't know which one is good to use

可能会触发表单帮助,但我不知道该使用哪种表单

1 个答案:

答案 0 :(得分:2)

如果要对数据块中的行进行排序,请打开其属性选项板,找到ORDER BY属性,然后将所需的内容放在其中。您的情况似乎是

order by no desc

在该数据块中执行查询时,结果将按no列的降序排序。

截至删除行:当然,它将丢失。您期望什么?序列可确保唯一但并非完美的数字列表。注意其缓存;您甚至不必删除任何行,但是连续两个会话可能会产生间隙。这就是序列的工作方式;如果我是你,我会接受的。

如果要创建无间隙数,则必须编写自己的代码,它不会像您想的那样简单。您必须注意插入(简单),更新和删除。再次:坚持序列。