Oracle использует последовательности, как для его столбцов идентификации, если можно так сказать.
Если вы задали последовательность для первичного ключа своей таблицы, вам также необходимо написать триггер, который вставит Sequence.NextValue или около того в поле первичного ключа.
Предполагая, что вы уже знакомы с этой концепцией, просто запросите последовательность, и вы получите ответ. То, что очень практикуется в Oracle, - это сделать себя функцией, которая будет возвращать INT, а затем внутри вашей функции вы выполняете INSERT. Предполагая, что вы правильно установили триггер, вы сможете вернуть значение вашей последовательности, запросив его.
Вот пример:
CREATE TABLE my_table (
id_my_table INT PRIMARY KEY
description VARCHAR2(100) NOT NULL
)
CREATE SEQUENCE my_table_seq
MINVALUE 1
MAXVALUE 1000
START WITH 1
INCREMENT BY 2
CACHE 5;
Если вы хотите самостоятельно управлять автоинкрементом, вот как:
INSERT INTO my_table (
id_my_table,
description
) VALUES (my_table_seq.NEXTVAL, "Some description");
COMMIT;
С другой стороны, если вы не хотите заботиться о приращении PRIMARY KEY, вы можете запустить триггер.
CREATE OR REPLACE TRIGGER my_table_insert_trg
BEFORE INSERT ON my_table FOR EACH ROW
BEGIN
SELECT my_table_seq.NEXTVAL INTO :NEW.id_my_table FROM DUAL;
END;
Затем, когда вы вставляете, вы просто набираете инструкцию INSERT следующим образом:
INSERT INTO my_table (description) VALUES ("Some other description");
COMMIT;
После ВСТАВКИ, я думаю, вы захотите
SELECT my_table_seq.CURRVAL
или что-то подобное, чтобы выбрать фактическое значение вашей последовательности.
Вот несколько ссылок, чтобы помочь:
http://www.orafaq.com/wiki/Sequence
http://www.orafaq.com/wiki/AutoNumber_and_Identity_columns
Надеюсь, это поможет!