|
|||||||
Как работать с полями AUTO_INCREMENT в PostgreSQL в Yii2
Время создания: 07.08.2017 22:45
Раздел: Компьютер - Программирование - Язык PHP - Yii2
Запись: xintrea/mytetra_syncro/master/base/1502135148wjeq8plfvq/text.html на raw.github.com
|
|||||||
|
|||||||
Paul Mod Особенность реализации PostgreSQL в том, что там нет понятия AUTO_INCREMENT у первичного ключа таблицы. Уникальное значение идентификатора нужно определить заранее, а затем устанавливать его как обычное свойство модели. Вот это не работает: $user = new User(); $user->save(); $lastId = Yii::app()->db->getLastInsertID(); // <-- будет ошибка Нужно так: $nextId = Yii::app()->db->getLastInsertID('tbl_user_seq'); // взять последний номер в последовательности, он тут же увеличится и повторов не будет $user = new User(); $user->id = $nextId; // явно назначить идентификатор $user->save(); где tbl_user_seq - это последовательность (sequence), созданная специально для нумерации сущностей таблицы tbl_user. Последовательность должны быть инициализирована так же как и таблица CREATE TABLE tbl_user ( --- таблица id integer PRIMARY KEY --- другие поля ); CREATE SEQUENCE tbl_user_seq START 1; --- последовательность специально для таблицы tbl_user Вот документация * http://www.postgresql.org/d... * http://www.postgresql.org/d... Булат Камалов Просто при создании таблицы надо указать у столбца id тип serial. Это аналог auto increment на mysql. Paul Mod Булат, ты прав. Так и есть. Сиквенс будет создан неявно. В коде Yii для PostgreSQL такой случай обрабатывается. Надо мне почаще самому с PostgreSQL работать. Сейчас вообще нет ни одного проекта на нём. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|