就是说在插入的时候必须使用seq_msg_id.nextval这样的语法吗? 也就是insert into import_info('aaa',seq_msg_id.nextval)这样? 可是在很多其他的数据库里面都可以建立自增长的列,做插入操作的时候,不用给这一列赋值,自动使用自增长的值,在oracle里面没有这样的功能吗?
在ORACLE中好像没有,只能用seq_msg_id.nextval
可以通过建立触发器解决 create or replace trigger trig_import before insert on import_info for each row declare -- local variables here begin --dbms_output.put_line('Come IN...........'); select testseq.nextval into :new.id from dual ; end trig_import;insert into import(name) values('test'); commit ;
--建表 CREATE TABLE table1 (id NUMBER PRIMARY KEY, username VARCHAR2(50));--建序列号 CREATE SEQUENCE table1_seq MINVALUE 1 MAXVALUE 9999999999 START WITH 1 INCREMENT BY 1 CACHE 30 ORDER;--建立触发器 CREATE OR REPLACE TRIGGER table1_tg BEFORE INSERT ON table1 FOR EACH ROW BEGIN SELECT table1_seq.NEXTVAL INTO :NEW.id FROM DUAL; END;--执行 INSERT INTO table1 (username) VALUES ('张三');
另外有一个问题:dual是个什么表?看panku(辣椒虫)提供的例子时,我一直没有看明白。 table1_seq.nextval这个东西可以从dual中取得到吗? 我select * from dual看了一下,表中只有一行一列: ———— DUMMY ———— x ________ 请那位解释一下。
如果我想今后增加的数据,不填写该列是,该列的内容使用这个自增长的列呢?
也就是insert into import_info('aaa',seq_msg_id.nextval)这样?
可是在很多其他的数据库里面都可以建立自增长的列,做插入操作的时候,不用给这一列赋值,自动使用自增长的值,在oracle里面没有这样的功能吗?
create or replace trigger trig_import
before insert on import_info
for each row
declare
-- local variables here
begin
--dbms_output.put_line('Come IN...........');
select testseq.nextval into :new.id from dual ;
end trig_import;insert into import(name) values('test');
commit ;
CREATE TABLE table1
(id NUMBER PRIMARY KEY,
username VARCHAR2(50));--建序列号
CREATE SEQUENCE table1_seq
MINVALUE 1
MAXVALUE 9999999999
START WITH 1
INCREMENT BY 1
CACHE 30
ORDER;--建立触发器
CREATE OR REPLACE TRIGGER table1_tg
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
SELECT table1_seq.NEXTVAL INTO :NEW.id FROM DUAL;
END;--执行
INSERT INTO table1 (username) VALUES ('张三');
table1_seq.nextval这个东西可以从dual中取得到吗?
我select * from dual看了一下,表中只有一行一列:
————
DUMMY
————
x
________
请那位解释一下。