Как изменить идентификатор столбца с последовательности на ВСЕГДА ВСЕГДА с данными - PullRequest
0 голосов
/ 13 февраля 2020

в качестве заголовка я хочу изменить свой столбец идентификаторов по порядку на GENERATED ВСЕГДА.

Например, у меня есть такая таблица:

CREATE SEQUENCE DPT.Deposit_SEQ 
START WITH     1
INCREMENT BY   10
NOCACHE
NOCYCLE;

CREATE TABLE DPT.TEST(
Id NUMBER(10)DEFAULT DPT.Deposit_SEQ.nextval NOT NULL
,Code VARCHAR2(20),
CONSTRAINT PK_TEST PRIMARY KEY (ID)
);
Insert into DPT.TEST (ID, CODE) values (1,'ABC');
COMMIT;

Теперь я хочу изменить последовательность на GENERATED ВСЕГДА, как это:

Id NUMBER(10) GENERATED ALWAYS AS IDENTITY START WITH 6
INCREMENT BY   10
NOCACHE
NOCYCLE;

Я попытался создать еще один столбец и удалить старый столбец, но не получилось. Как я могу это сделать?

Спасибо!

1 Ответ

1 голос
/ 13 февраля 2020

«Но не удалось» не является ошибкой Oracle и ее трудно отладить.

В любом случае, это работает для меня:

Создайте таблицу и последовательность, вставьте несколько строк:

SQL> CREATE SEQUENCE Deposit_SEQ START WITH 1 INCREMENT BY 10 NOCACHE NOCYCLE;

Sequence created.

SQL> CREATE TABLE TEST
  2  (
  3     Id    NUMBER (10) DEFAULT Deposit_SEQ.NEXTVAL NOT NULL,
  4     Code  VARCHAR2 (20),
  5     CONSTRAINT PK_TEST PRIMARY KEY (ID)
  6  );

Table created.

SQL>
SQL> INSERT INTO TEST (ID, CODE)
  2       VALUES (1, 'ABC');

1 row created.

SQL> INSERT INTO TEST (ID, CODE)
  2       VALUES (3, 'DEF');

1 row created.

SQL> SELECT * FROM test;

        ID CODE
---------- --------------------
         1 ABC
         3 DEF

Удалить текущий столбец первичного ключа (ID) и добавить новый столбец идентификаторов:

SQL> ALTER TABLE test
  2     DROP COLUMN id;

Table altered.

SQL> ALTER TABLE test
  2     ADD id NUMBER GENERATED ALWAYS AS IDENTITY START WITH 6;

Table altered.

SQL> SELECT * FROM test;

CODE                         ID
-------------------- ----------
ABC                           6
DEF                           7

SQL> ALTER TABLE test ADD CONSTRAINT pk_test PRIMARY KEY (id);

Table altered.

SQL>

Как видите, проблем нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...