일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 러스트기초
- nest.js설명
- 스마트 컨트렉트 함수이름 중복
- 스마트컨트렉트 예약어 함수이름 중복
- 스마트컨트렉트테스트
- 체인의정석
- multicall
- chainlink 설명
- 오블완
- rust 기초
- git rebase
- Vue.js
- Vue
- SBT표준
- 스마트컨트렉트 함수이름 중복 호출
- 머신러닝기초
- 티스토리챌린지
- ethers
- 러스트 기초
- vue기초
- 프록시배포구조
- ethers type
- 컨트렉트 동일한 함수이름 호출
- ethers typescript
- ambiguous function description
- ethers v6
- 스마트컨트렉트프록시
- 컨트렉트 배포 자동화
- ethers websocket
- 러스트 기초 학습
Archives
- Today
- Total
체인의정석
Sequalize와 raw query를 통하여 updated at, created at 만들기 본문
728x90
반응형
시퀄라이즈를 이용하게 되면 기본적으로 created at, updated at을 만들어 준다.
다만 이렇게 할 경우 raw query 대신에 시퀄라이즈의 문법을 써주어야 한다.
내가 이번에 작업했던 쿼리는 upsert() 라는 시퀄라이즈 함수를 사용하면 되었는데
나는 raw query로 작업을 하였다.
그러다 보니 raw query로 Update, create를 하는 방법을 찾게 되었다.
const table = sequelize.define(table_name, {
createdAt: {
type: DataTypes.DATE,
field: 'created_at',
defaultValue: sequelize.literal('CURRENT_TIMESTAMP'),
},
updatedAt: {
type: DataTypes.DATE,
field: 'updated_at',
defaultValue: sequelize.literal('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'),
}
}, {
timestamps: false
}
다음과 같이 timestamps를 false로 두는 이유는 이것이 원래는 기본 값이 true인데 기본 값이 되면 시퀄라이즈가 알아서 업데이트랑 크리에이트를 해준다고 한다.
하지만 raw query에서 진행을 하려면 시퀄라이즈가 기본적으로 세팅해주는 것을 사용하지 않을 것이므로 따로 테이블도 정의해주고 테이블을 만들 때 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 구문을 사용하여 업데이트까지 진행 시킬 수 있ㄷ.ㅏ
이렇게 하면 insert, update, upsert 등을 로우쿼리로 해도 쿼리가 잘 되는 것을 볼 수 있었다.
728x90
반응형
'개발 > database' 카테고리의 다른 글
카산드라 DB mac에서 사용해보기 (0) | 2023.11.13 |
---|---|
DB에서 인덱싱하는 법과 Sequalize에서 테이블 정의 시 index 넣는 방법 (0) | 2023.09.15 |
MYSQL에서 Insert와 update 하나의 구문으로 처리하기 (ON DUPLICATE KEY UPDATE, UPSERT, sequalize) (0) | 2023.08.21 |
MySQL) 쿼리 실행 순서 및 테이블 합치기 (0) | 2023.02.14 |
스마트컨트렉트, 백엔드 , DB사이의 작업 처리에 대하여 (MySQL 다중 테이블 쿼리 + 백엔드 처리) (0) | 2023.02.13 |
Comments