Почему эта последовательность увеличивается на 2?

Я не могу понять, почему эта последовательность увеличивается на 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);

2 ответа

Потому что вы получаете доступ к последовательности как в вашем INSERT оператор и в триггере, который запускается для каждой строки, конечно, он увеличивается на два.

Выбери один.
Я бы выбрал основанный на триггере, поскольку вам не нужно будет указывать последовательность в каждом операторе вставки, который вы можете выполнить.

В этом случае вам придется явно перечислить столбцы, которые вы собираетесь вставить VALUES чтобы:

INSERT INTO food (f_name, category, price, amount)
VALUES ('ruchi', 'chanachur' , 8, 50);

У вас есть два варианта, чтобы исправить это.

  1. измените оператор вставки, чтобы он был таким:

    insert into food (f_name, category,price , amount)
    values ('ruchi', 'chanachur' , 8, 50);
    
  2. или измените ваши триггеры следующим образом:

    CREATE OR REPLACE TRIGGER insert_into_food
    BEFORE INSERT ON food
    FOR EACH ROW
    BEGIN
      if :new.food_id is null then 
        :new.food_id:= food_id_ai.nextval;
      end if;
    END;
    /
    
Другие вопросы по тегам