oracle 用触发器设置了自增序列,插入语句该怎么写?
我写的:Stringsql="insertintoexamplevalues(null,?,?)";其中null为自增id,其他两项为name和age,可是插入的是总是说...
我写的:String sql="insert into example values(null,?,?)";其中null为自增id,其他两项为name和age,可是插入的是总是说“无效的列索引”...我已经设置id自增了啊,把null改为? y也不对啊,去掉null会说什么数值不够,到底该怎么写啊
展开
5个回答
展开全部
一个完整的例子, 仅供参考:
SQL> CREATE SEQUENCE test_sequence2
2 increment by 1 -- 每次递增1
3 start with 1 -- 从1开始
4 nomaxvalue -- 没有最大值
5 minvalue 1 -- 最小值=1
6 NOCYCLE; -- 不循环
Sequence created.
SQL> CREATE TABLE test_create_tab2 (
2 id INT,
3 val VARCHAR(10),
4 PRIMARY KEY (id)
5 );
Table created.
SQL> CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert
2 BEFORE INSERT ON test_create_tab2
3 FOR EACH ROW
4 BEGIN
5 SELECT test_sequence2.nextval INTO :new.id FROM dual;
6 END;
7 /
Trigger created.
SQL> INSERT INTO test_create_tab2(val) VALUES ('NO id');
1 row created.
SQL> INSERT INTO test_create_tab2(id, val) VALUES (1, 'id no use');
1 row created.
SQL> SELECT * FROM test_create_tab2;
ID VAL
---------- --------------------
1 NO id
2 id no use
SQL> CREATE SEQUENCE test_sequence2
2 increment by 1 -- 每次递增1
3 start with 1 -- 从1开始
4 nomaxvalue -- 没有最大值
5 minvalue 1 -- 最小值=1
6 NOCYCLE; -- 不循环
Sequence created.
SQL> CREATE TABLE test_create_tab2 (
2 id INT,
3 val VARCHAR(10),
4 PRIMARY KEY (id)
5 );
Table created.
SQL> CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert
2 BEFORE INSERT ON test_create_tab2
3 FOR EACH ROW
4 BEGIN
5 SELECT test_sequence2.nextval INTO :new.id FROM dual;
6 END;
7 /
Trigger created.
SQL> INSERT INTO test_create_tab2(val) VALUES ('NO id');
1 row created.
SQL> INSERT INTO test_create_tab2(id, val) VALUES (1, 'id no use');
1 row created.
SQL> SELECT * FROM test_create_tab2;
ID VAL
---------- --------------------
1 NO id
2 id no use
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
oracle中没有自动增长列。
实现oracle自动增长列必须用序列,首先创建序列
CREATE SEQUENCE 序列名
INCREMENT BY 1 --每次增长大小
START WITH 1000 --开始大小
NOMAXVALUE
NOCYCLE
CACHE 10;
然后在sql中
insert into table(ID,name) values(序列名.nexeval,name)
如果有什么疑问可以追问。
实现oracle自动增长列必须用序列,首先创建序列
CREATE SEQUENCE 序列名
INCREMENT BY 1 --每次增长大小
START WITH 1000 --开始大小
NOMAXVALUE
NOCYCLE
CACHE 10;
然后在sql中
insert into table(ID,name) values(序列名.nexeval,name)
如果有什么疑问可以追问。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
假设example里有3个字段名1,2,3,其中字段名1要设置自增,序列名称为序列名1
insert into example (字段名1,字段名2,字段名3)
values ('序列名1.nextval','字段2','字段3')
insert into example (字段名1,字段名2,字段名3)
values ('序列名1.nextval','字段2','字段3')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
oracle中没有自增列这个说法,你所想要的效果,可以用oracle中的序列实现你所要的效果。
关于序列的用法,你可以baidu下。
关于序列的用法,你可以baidu下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
insert into example (列2, 列3) values (值2, 值3)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |