Дерби изменить существующий столбец пустой таблицы, чтобы быть идентичностью - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь сделать следующее:

psAddPK = conn.prepareStatement("ALTER TABLE users ALTER usr    
                      GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)");        

psAddPK.execute(); 

, но получить

java.sql.SQLSyntaxErrorException: синтаксическая ошибка: обнаружен "GENERATED"

при создании usr определено NOT NULL

1 Ответ

0 голосов
/ 28 ноября 2018

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

Вот спецификация таблицы Derby Alter

Оператор ALTER TABLE позволяет вам:

  • добавить столбец в таблицу
  • добавить ограничение в таблицу удалить столбец из таблицы
  • удалить существующее ограничение из таблицы
  • увеличить ширину столбца VARCHAR или VARCHAR FOR BIT DATA
  • переопределить блокировку на уровне строки для таблицы (или сбросить переопределение)
  • изменить значение приращения и начальное значениестолбец идентификаторов
  • изменить ограничение обнуляемости для столбца
  • изменить значение по умолчанию для столбца

Синтаксис:

ALTER TABLE table-name
{
    ADD COLUMN column-definition |
    ADD CONSTRAINT clause |
    DROP [ COLUMN ] column-name [ CASCADE | RESTRICT ]
    DROP { PRIMARY KEY | FOREIGN KEY constraint-name | UNIQUE 
     constraint-name | CHECK constraint-name | CONSTRAINT constraint-name }
    ALTER [ COLUMN ] column-alteration |
    LOCKSIZE { ROW | TABLE }
}

изменение столбца

column-name SET DATA TYPE VARCHAR(integer) |
column-name SET DATA TYPE VARCHAR FOR BIT DATA(integer) |
column-name SET INCREMENT BY integer-constant |
column-name RESTART WITH integer-constant |
column-name [ NOT ] NULL |
column-name [ WITH | SET ] DEFAULT default-value |
column-name DROP DEFAULT

определение столбца

simple-column-name [ data-type ]
[ column-level-constraint ]*
[ [ WITH ] DEFAULT default-constant-expression
  | generation-clause
]
...