爲什麽會有id為空??應該想辦法通過sequence的方法解決
解决方案 »
- oracle中,把字段内容拆分成小块,小块完全区配,如何查询啊
- ORACLEDBConsoleorcl服务问题!急!
- 如何将现有的SQL SERVER数据库移到ORACLE中
- systimestamp与SYSDATE有什么区别?
- 在线求一个函数!!!!!!否则老板就不让下班了5555555555555求求大家了
- vc写的程序访问Oracle数据库问题??
- 使用临时表的问题?
- 请问这样一个sql语句该怎么写
- 数据泵导入报错
- Oracle使用命令新建的用户在本地客户端自带的plsql里可以登录,但在navicat中始终无法登录.
- 请问大家个update的问题
- 为何只提示 “警告: 创建的过程带有编译错误。”,不指出错在哪行。
create sequence S_test
minvalue 1
maxvalue 9999999999999999999999999
start with 1
increment by 1
cache 20;-- Create trigger
create or replace trigger t_test
before insert on table_test
for each row
begin
Select s_test.nextval into :New.ID From dual;
end t_test;
before insert on t for each row
declare
id_str varchar2(10);
id_num number;
begin
select max(id) into id_str from t;
id_num:=to_number(id_str,'9999999999');
id_num:=id_num+1;
id_str:=to_char(id_num);
--update t set id=id_str where id is null;
update t set id=id_str where id is null and t1=:new.t1;
end test_insert;SQL> select * from t;T T ID
- - ----------
A B
a a 2
a a 3SQL> insert into t values('A','a',4);已创建 1 行。SQL> select * from t;T T ID
- - ----------
A B 4
A a 4
a a 2
a a 3不知道楼主的问题在哪里?
改为插入后触发你就会看到问题了~
commit后再查最大的。只有用自治事务了。