Celesta: поддержка SEQUENCE, прекращение поддержки IDENTITY и MSSQL2009

5 views
Skip to first unread message

Ivan Ponomarev

unread,
Jan 8, 2018, 2:50:13 AM1/8/18
to curs-group

Уважаемые коллеги,

Перед новым годом в Celesta была добавлена поддержка создания  и использования объектов типа SEQUENCE (см. в рассылке письмо Ивана Головко).

Теперь реализация столбца с автоматически инкрементируемым значением возможна таким образом:

CREATE SEQUENCE idNumerator;

CREATE TABLE customTable (
  id int DEFAULT NEXTVAL(idNumerator) not null,
  CONSTRAINT pk_customTable PRIMARY KEY (id)
);

На уровне базы данных используется функциональность SEQUENCE. Для MSSQLServer данная функциональность появилась с версии 2011, для SQL Server 2009 этой функциональности не существует, поэтому полная поддержка всех возможностей Celesta теперь осуществляется только начиная с MSSQL 2011. (На MSSQL2009 будут работать Celesta-скрипты, не использующие SEQUENCE).

Ключевое слово IDENTITY является теперь нежелательным к использованию. Его реализация в Celesta "под капотом" применяет объекты типа SEQUENCE для всех СУБД, кроме MS SQL. Для MS SQL применяется грубая медленная эмуляция (из-за чего в таблицы с IDENTITY для MSSQL низкая скорость вставки).

  • Я прошу всех пользователей для нового кода использовать функциональность SEQUENCE вместо IDENTITY.
  • В стандартных гранулах и старом коде я призываю заменить IDENTITY на SEQUENCE. Для перехода с IDENTITY на SEQUENCE в таблице с данными можно использовать в определении SEQUENCE ... STARTS WITH <число>, где <число> заведомо превышает "набежавший" номер IDENTITY. 
  • Я прошу откликнуться пользователей MSSQL и сообщить свою версию. Планируется постепенная замена IDENTITY на SEQUENCE и удаление слова IDENTITY из языка CelestaSQL.

С уважением,

Иван Пономарёв

Reply all
Reply to author
Forward
0 new messages