У меня есть таблица с 60 миллионами строк данных.Я хотел бы ввести новый столбец с именем «id» для таблицы, которая представляет собой автоматически увеличенную последовательность.
Например:
CREATE TABLE Persons (
LastName varchar(255),
FirstName varchar(255)
);
INSERT INTO Persons VALUES ('abc', 'def');
INSERT INTO Persons VALUES ('abcd', 'ghi');
CREATE SEQUENCE "PERSON_SEQUENCE" START WITH 1 INCREMENT BY 1;
ALTER TABLE PERSONS ADD (PERSONID NUMBER);
UPDATE persons SET personid = PERSON_SEQUENCE.NEXTVAL;
В приведенных выше инструкциях sql я могусоздайте последовательность, затем измените таблицу и обновите ее.
Поскольку объем данных, которые мне нужно обновить, велик ... Я хотел бы выполнить это с как можно более низкой стоимостью.
Я пытаюсь сделать что-то вроде этого:
ALTER TABLE PERSONS ADD (PERSONID NUMBER DEFAULT(PERSON_SEQUENCE.NEXTVAL));
, но выше не работает.Oracle выдает мне следующую ошибку:
Ошибка запуска в строке: 1 в команде - ALTER TABLE PERSONS ADD (PERSONID NUMBER DEFAULT (PERSON_SEQUENCE.NEXTVAL)) Отчет об ошибке - ORA-00984: столбец здесь недопустим 00984. 00000- «столбец здесь не разрешен» * Причина:
* Действие:
Однако это работает:
ALTER TABLE PERSONS ADD (PERSONID NUMBER DEFAULT(0));
Может кто-нибудь помочь мне с тем, как я могу добиться, чтобы изменить таблицу (создать новый столбец) и заполнить столбец с seq id как в одном sql.Спасибо!