就看你的序列是向上增长还是向下递减的
向上增长,求该表中那个字段的最大值
select max(col1) from table1;
向下递减,求该表中那个字段的最小值
select min(col1) from table1;
向上增长,求该表中那个字段的最大值
select max(col1) from table1;
向下递减,求该表中那个字段的最小值
select min(col1) from table1;
再有如果序列是循环值的话这个方法就不行了。在写TRIGLE的时候,我注意到插入新行用的是NEW.SOMEID,在普通的选择中有什么关键字可以引用到刚插入的新行呢?still waiting...
建议做一个存储过程:
创建序列:
create sequence test
increment by 1
start with 1
maxvalue 999999
引用序列值:
insert into table_name(col1,col2,col3...)
values(test.nextval,value1,value2,value3...)
其中的“test.nextval”即为引用的序列值。
然后把上面的插入语句放入存储过程中。
不过我更想知道有没有方法引用到新插入行的关键字。例如有表t(c1,c2,c3),新插入行后想取得任何一个字段只需要用“关键字”.c1等。或者有其它的手段,我遇到的情况是,程序执行了一个插入的SQL语句,而我只知道刚才SQL语句插入了一行新数据,而表中有一个字段(ID)是通过序列生成的,现在我要得到它!
How to..., please!waiting...
变量值目前保存的就是你当前插入的ID值不知是否可行,也许是我没明白你的意思
MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE
NOCACHE NOORDER;CREATE OR REPLACE TRIGGER USERADD
BEFORE INSERT ON MEMBERRG
FOR EACH ROW
BEGIN
SELECT LPAD(USERID.NEXTVAL,4,'0') INTO :NEW.NUM FROM DUAL;
END;
我遇到的问题是,某个方法执行了一个INERT语句,插入了一行,我不可能去重写这个方法,也不可能把这个方法的SQL语句打开看看,我现在要取得这刚刚插入的行的某个字段的值,这个值是通过某个序列生成的。
不过取得了这个行也就能取得该行的所有字段了,好了,如何取得此行?You are welcome!!!
1.在插入记录时将该值记录下来,放到全局变量或表中.估计这不是你需要的.
2.取得最后插入的行.对ORACLE而言你可以通过判断ROWID来确定最后行.但这样对
分区表是否适用就不清楚了.即select a from table where rowid=(select max(rowid) from table).
你可以考虑把 insert 的行的数值写入包中