id oid name
1 100 Chery
2 101 Jack
3 101 Mark要求: 先数据库插入记录时,id是主键,自动递增的,oid 不是自增的 它的值 是在一条记录的值的基础之上递增1 如果表空记录时,oid的默认值为 零 sql语句该如何写啊 谢谢各位 O(∩_∩)O~
1 100 Chery
2 101 Jack
3 101 Mark要求: 先数据库插入记录时,id是主键,自动递增的,oid 不是自增的 它的值 是在一条记录的值的基础之上递增1 如果表空记录时,oid的默认值为 零 sql语句该如何写啊 谢谢各位 O(∩_∩)O~
第二条跟第三条的oid怎么都是101?把oid设置成自增不就可以了吗?
哦, 我的错,大错咯,该是102 嘿嘿
能不能通过sql语句实现哦
oracle的话可以通过sequence来实现insert into t values(s_t_id.nextvalue, s_t_oid.nextval, 'xxx');s_t_id和s_t_oid都是oracle里的sequence,如果你用的是oracle,你自然知道我说的是什么意思.非oracle的数据库,又不想做成自增字段的话,可以自己写个函数来获取最大oid,然后在insert的时候调用这个函数,下面是伪代码(具体语法因具体数据库类型而异)
==================================================================
create function getNextOid () {
var v_oid int;
select nvl(max(oid), -1) + 1 into v_oid from t;
return v_oid;
}insert into t values(getNextOid(), 'xxx');
--[Orac9i PL/SQL环境]declare
myoid number(5):=0;
begin
select max(oid) into myoid from yourTable;
if myoid is null then
myoid:=0; --没有记录则从0开始
end if;
myoid:=myoid+1;
--接下来是你的相关插入代码(记得commit;)
end;
insert into t (oid, name)
select nvl(max(oid), -1) + 1, 'xxx') from t
select ifnull(max(oid), -1) + 1, 'xxx' from t;