Sequalize добавляет неявный первичный ключ к запросу - PullRequest
0 голосов
/ 01 октября 2018

Я использую sequelize-typescript, и он неявно добавляет столбец первичного ключа ко всем запросам на создание, что является проблемой, потому что я не хочу устанавливать этот идентификатор самостоятельно (для IDENTITY_INSERT установлено значение OFF).

@Table({
  timestamps: false,
})
class Table extends Model<Table> {
  @PrimaryKey
  @Column
  MyId: string;
  @Column
  column: string;
}
table.create({column: 'value'});

Это заканчивается запросом:

sql: 'INSERT INTO [Table] ([MyId],[column]) OUTPUT INSERTED.* VALUES (NULL,'value');'

И ошибка:

SequelizeDatabaseError: DEFAULT or NULL are not allowed as explicit identity values.

Мне нужно получить запрос:

INSERT INTO [Table] ([column]) OUTPUT INSERTED.* VALUES ('value');

Любая помощьочень ценится!

1 Ответ

0 голосов
/ 02 октября 2018

Прежде всего - удалите @PrimaryKey decorator.После того, как модель добавлена ​​в экземпляр sequelize, сделайте следующее:

Table.removeAttribute('id');

Теперь идентификатор не будет добавлен к запросам, но будет использоваться для упорядочивания в методах выбора, поэтому установите свой собственный порядок с помощью:

Table.findAll({where: {column: 'value'}, order: ['MyId']});

И, конечно, использование этого означает, что ваша БД знает, какой столбец является первичным ключом, и увеличивает его самостоятельно.

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