barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

воскресенье, 16 июня 2013 г.

Oracle: аналог AUTO_INCREMENT в MySQL

В Oracle автогенерация целочисленных идентификаторов, реализуемая в MySQL посредством модификатора AUTO_INCREMENT, выполняется по схеме sequence + trigger, т.е.:
  1. Создаем таблицу с целочисленным первичным ключом, например:
    CREATE TABLE my_table(
         my_id NUMBER(16),
         CONSTRAINT my_id_pk PRIMARY KEY (my_id)
    )
  2. Создаем последовательность:
    CREATE SEQUENCE my_id_seq;
  3. Создаем триггер:
    DELIMITER /
    CREATE OR REPLACE TRIGGER my_id_trg
         BEFORE INSERT ON my_table FOR EACH ROW
    BEGIN
         IF :NEW.my_id IS NULL THEN
              SELECT my_id_seq.NEXTVAL INTO :NEW.my_id FROM DUAL;
         END IF;
    END;
    /

Комментариев нет:

Отправить комментарий