是这样的:
在oracle中,在刚插入一条数据后,想得到刚插入的数据的id,这个id是通过触发器做成的类似自增长列的.
这样:
"insert into 表 (filed1,filed2,filed3)values(:filed1,:filed2,:filed3);select seq_biao.currval from dual;"
其中表有一个字段是id,触发器类似如下:
create or replace trigger TR_表
before insert on 表
for each row
begin
Select seq_表.NextVal into :New.id from Dual;
end;
seq_表也有。
但是执行的时候出了两个错误:
1:好像一行不能执行两条语句,但是在程序中(asp.net)写,怎么换行啊?
2:提示“在此 SELECT 语句中缺少 INTO 子句 ”
请大家帮忙,谢谢了。
在oracle中,在刚插入一条数据后,想得到刚插入的数据的id,这个id是通过触发器做成的类似自增长列的.
这样:
"insert into 表 (filed1,filed2,filed3)values(:filed1,:filed2,:filed3);select seq_biao.currval from dual;"
其中表有一个字段是id,触发器类似如下:
create or replace trigger TR_表
before insert on 表
for each row
begin
Select seq_表.NextVal into :New.id from Dual;
end;
seq_表也有。
但是执行的时候出了两个错误:
1:好像一行不能执行两条语句,但是在程序中(asp.net)写,怎么换行啊?
2:提示“在此 SELECT 语句中缺少 INTO 子句 ”
请大家帮忙,谢谢了。
insert into 表 (filed1,filed2,filed3)values(:filed1,:filed2,:filed3); select @@IDENTITY
在oracle中相应的该怎么样啊?
如果弄到一个临时变量中,怎么从这个临时变量中取出来啊?我想把这个值取出来啊关键是.
=====================
多谢上面两位解答.
那你的意思是:
"select seq_biao.currval from dual;"
"insert into 表 (id,filed1,filed2,filed3)values(上句取出的值,:filed1,:filed2,:filed3);" ????
那这样的话,那个触发器还用不用啊?
先把触发器去掉,然后在插入的时候,先取出currval,然后将这个currval值作为id去做普通的插入,对吗?
那我写sql语句的时候,也就没有必要将两条语句写成一条了吧?
就可以先取出这个currval,在程序中存为一个变量,再根据这个变量去组织sql语句?对吗?