我不明白为什么这个序列会增加2。
是否有按顺序递增1的错误?我需要这个在表‘食物’中插入主键值。
CREATE SEQUENCE food_id_ai START WITH 1 INCREMENT BY 1 CACHE 100;
create table food(
food_id integer,
f_name varchar(30) not null,
category varchar(30) not null,
price number(4),
amount number(4)
);
alter table food add constraint fpk primary key(food_id);
CREATE OR REPLACE TRIGGER insert_into_food
BEFORE INSERT ON food
FOR EACH ROW
BEGIN
:new.food_id:= food_id_ai.nextval;
END;
/
insert into food values(food_id_ai.nextval,'ruchi', 'chanachur' , 8, 50);
insert into food values(food_id_ai.nextval,'chips', 'chips' , 8, 50);
insert into food values(food_id_ai.nextval,'aeromatic', 'soap' , 8, 50);
insert into food values(food_id_ai.nextval,'handwash', 'toyletries', 8, 50);
insert into food values(food_id_ai.nextval,'tissue', 'toyletries' , 8, 50);
发布于 2015-08-21 19:27:06
因为您正在访问INSERT
语句中的序列和为每一行启动的触发器中的序列,所以它当然会增加两个。
选择一个。
我会选择基于触发器的语句,因为您不必记得在可能执行的每个insert语句中指定序列。
在这种情况下,您必须显式列出要插入VALUES
的列:
INSERT INTO food (f_name, category, price, amount)
VALUES ('ruchi', 'chanachur' , 8, 50);
发布于 2015-08-22 12:22:24
您有两个选项来纠正这个问题。
https://stackoverflow.com/questions/32147894
复制相似问题