先建序列,再在表上做个触发器,在触发器里:new.ID := 序列.nextval;
解决方案 »
- 有几个关于ORACLE的基本问题~!想请教大家~!
- oracle10g权限设置
- 怎么逐行 测试存储过程的执行
- 9i安装后,Enterprise Manager Console 不能启动,请各位给小弟解惑
- 触发器 'SFA.TRIGGER_TEST' 无效且未通过重新确认
- 如何解决oracle得字符集不同的情况
- 菜鸟寻找帮助!!!
- 求救:ctl文件的写法
- ORA-12154:TNS:无法解析制定的连接标识符
- 本地计算机上的ArcSde Sercice(esri_sde)服务启动后停止。某些服务未在由其他服务或进程使用时将自动停止。
- ◆有Oracle的client简单安装软件(方法)吗?
- 我在导出用户时出现下列错误,请问如何解决,EXP-00056: 遇到 ORACLE 错误 600
2 (
3 id number,
4 name varchar2(10)
5 )
6 ;Table createdSQL>
SQL> create sequence T1ID_SEQ
2 minvalue 1
3 maxvalue 999999
4 start with 1
5 increment by 1
6 cache 20
7 ;Sequence created
SQL> create or replace trigger t1id_tr
2 before insert on t1 for each row
3
4
5 begin
6 select to_char(T1ID_SEQ.nextval) into :new.id from dual;
7 end t1id_tr;
8 /Trigger createdSQL> insert into t1(name) values('n1');1 row insertedSQL> commit;Commit completeSQL> select * from t1; ID NAME
---------- ----------
1 n1SQL> insert into t1(name) values('n2');1 row insertedSQL> commit;Commit completeSQL> select * from t1; ID NAME
---------- ----------
1 n1
2 n2SQL>
SP2-0734: 未知的命令开头 "reate or r..." - 忽略了剩余的行。
SQL> before insert on t1 for each row
SP2-0734: 未知的命令开头 "before ins..." - 忽略了剩余的行。
SQL>
SQL>
SQL> begin
2 select to_char(T1ID_SEQ.nextval) into :new.id from dual;
3 end t1id_tr;/
4 /
SP2-0552: 未说明结合变量"NEW"
/////////////////////////////
SQL> create or replace trigger t1id_tr
2 before insert on t1 for each row
3
4
5 begin
6 select to_char(T1ID_SEQ.nextval) into :new.id from dual;
7 end t1id_tr;
8 /
我用这个跑不通啊,得到的是最上面的那个结果。
CREATE SEQUENCE SEQ_AAAID
INCREMENT BY 1
MAXVALUE 999999999
MINVALUE 1
NOCYCLE
NOORDER创建触发器:
CREATE OR REPLACE TRIGGER TR_AAA_ID
BEFORE INSERT
ON tablename
FOR EACH ROWDECLARE
V_ID NUMBER;
BEGIN
SELECT SEQ_AAAID.NEXTVAL INTO V_ID FROM DUAL;
:NEW.ID(对应需自动增长字段名) := V_ID;END TR_AAA_ID;这样就行!