Автоинкремент по соседниму полю
Задача сделать автоинкремент для поля position,но увеличиваться должен вределах одного значения в поле room_id. Решение нужно на postgres или typeorm
| id | room_id | position | ... |
|---|---|---|---|
| 1 | 1 | 1 | ... |
| 2 | 1 | 2 | ... |
| 3 | 2 | 1 | ... |
| 4 | 3 | 1 | ... |
| 5 | 3 | 2 | ... |
Ответы (1 шт):
Автор решения: Игорь Рожков
→ Ссылка
import {BeforeInsert} from 'typeorm';
class Code {
@BeforeInsert()
async incrementPosition() {
const code = await Code.findOne({
where: {
room: this.room,
},
select: ['id', 'position'],
order: {
position: 'DESC',
},
})
this.position = (code?.position ?? 0) + 1;
}
}
Code.create({
room: await Room.findOne(1),
}).save() // не используйте insert
Это мой вариант. Если кто то напишет свой вариант например на тригерах, буду признателен.