最近做东西遇到需要在ASP.NET操作ORACLE数据库并在添加数据记录时ID值自动递增1,如何实现?
解决方案 »
- 存储过程还是C#?
- 控制一个元素的换行?
- 在ASP。NET .cs 页面里如何接受XMLHTTP传过来的参数?
- 排除问题?
- win2000下运行asp.net程序出现如下错误?
- 公司急聘
- 为什么引用“using System.Management”系统说找不到程序集!
- DATAGRID能有下拉条吗?在线等`~~~~~~高手~~~~
- deptsNew = deptsNew.Where(a => a.Id < 0)
- 怎么得知服务器的操作平台是什么?
- 求助!大家来帮忙呀,100分!解决了马上给分
- 如何用javascript在datagrid里添加一个含有TextBox的项,在服务器端可取得TextBox的值
-- Create sequence
create sequence ASM_SEELOG_SEQ
minvalue 1
maxvalue 999999999999999999999999999
start with 3549
increment by 1
cache 20;然后,你添加数据的时候这样调用
insert into table(id,name) values(asm_seelog_seq.nextval,'xxxx')即可自动加1
能不能分享一下解决的方法呢?谢谢
我是这样做的:
方法一:全部任务让oracle完成,需要建序列和触发器,在.net中根本不用写这个字段:
在ASP.NET+ORACLE添加数据记录并让ID自动增量需要在ORACLE中设序列和触发器即可,切记不是索引,ASP.NET中不管ID,具体如下:
1、建立序列:
CREATE SEQUENCE seq_emergency_id
NOCYCLE
MAXVALUE 9999999999
START WITH 2; 2、建立触发器:
CREATE OR REPLACE TRIGGER set_emergency_id
BEFORE INSERT ON "EMERGENCY"
FOR EACH ROW
DECLARE
next_emergency_id NUMBER;
BEGIN
--Get the next emergency id from the sequence
SELECT seq_emergency_id.NEXTVAL
INTO next_emergency_id
FROM dual; --use the sequence number as the primary key
--for the record being inserted
:new.id := next_emergency_id;
END; 如果在企业管理器中创建,在触发器说明中填:
DECLARE
next_emergencycb_id NUMBER;
BEGIN
--Get the next id number from the sequence
SELECT seq_emergencycb_id.NEXTVAL
INTO next_emergencycb_id
FROM dual; --use the sequence number as the primary key
--for the record being inserted
:new.id := next_emergencycb_id;
END;方法二:
就建个序列,然后用楼上摸门槛帅哥的方法,在.net中调用的SQL语句中用.nextval写。