UPDATE 쿼리로는 여러 레코드를 같은 값으로만 수정할 수 있기에, 여러 개를 각각 다른 값으로 수정해주어야 하는 경우에는 쿼리 한 방으로 처리할 수 없다고 생각했다.그러나 아래와 같은 방식을 사용하면 가능해용INSERT INTO ... ON DUPLICATE KEY UPDATE & VALUESVALUES 함수는 해당 컬럼에 삽입될 값을 의미한다고 한다. 때문에 Id가 PK인 my_table이 있다고 할 때, Id가 1, 2, 3인 컬럼의 순서를 각각 0, 1, 2로 갱신하는 쿼리는 다음과 같이 작성할 수 있다.INSERT INTO my_table (Id, `Order`) VALUES (1, 0), (2, 1), (3, 2) ON DUPLICATE KEY UPDATE my_table.`Order` = ..
[~] brew services list # service 상태 확인Name Status User Filemysql started ingnoh [...][~] brew services stop mysql # 삭제를 위해 service 중지[~] brew uninstall mysql # mysql 삭제# 대충 삭제 과정...# 오래 걸리진 않는다...[~] brew install mysql@8.4# 대충 설치 과정...# 이건 오래 걸린다...[~] brew services start mysql@8.4 # mysql 8.4 서비스 시작[~] mysql --help | grep my.cnf # 포트 번호 설정을 위한 my.cnf 파일 조회 ord..
[~] docker pull mysql:5.7 5.7: Pulling from library/mysql no matching manifest for linux/arm64/v8 in the manifest list entries [~] 또 M1 Mac 이슈인 듯 하다. 아키텍쳐가 안맞아 상술한 오류가 뜬다면, --platform 을 아래와 같이 명시하여 이미지를 땡겨가자. [~] docker pull --platform linux/amd64 mysql:5.7 5.7: Pulling from library/mysql 20e4dcae4c69: Pull complete 1c56c3d4ce74: Pull complete e9f03a1c24ce: Pull complete 68c3898c2015: Pull compl..
MySQL :: MySQL 8.0 Reference Manual :: 13.3.2 The CHAR and VARCHAR Types 13.3.2 The CHAR and VARCHAR Types The CHAR and VARCHAR types are similar, but differ in the way they are stored and retrieved. They also differ in maximum length and in whether trailing spaces are retained. The CHAR and VARCHAR types are declared with a l dev.mysql.com Values in VARCHAR columns are variable-length strings. ..
문제 작업 중에 임의의 리소스에 할당된 리액션들을 이모지 형태로 관리할 필요가 있어서 아래와 같은 테이블을 설계했다. CREATE TABLE `Reactions` ( `Id` INT(11) NOT NULL AUTO_INCREMENT, `ResourceId` INT(11) NOT NULL, `Value` VARCHAR(20) NOT NULL, `CreatedAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `CreatedById` VARCHAR(255) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`Id`), UNIQUE `Reactions_uq_1` (`ResourceId` ASC, `Value` ASC, `CreatedById` AS..
낙관적 락 동시성 문제가 일반적으로 발생하지 않을 것으로 보고(=낙관적), 락을 걸지 않고 시작한다. 별도의 Version 컬럼을 두고, 트랜잭션을 커밋할 시점에 동시성 문제가 발생했는지 검증한다. 트랜잭션을 커밋할 때까지 동시성 문제가 발생함을 알 수 없으며, 발생한 경우 애플리케이션 로직으로 처리한다. 비관적 락 동시성 문제가 빈번히 발생할 것으로 보고(=비관적), 트랜잭션을 시작할 때 락을 걸고 시작한다. select for update와 같은 쿼리를 활용하며, 데이터베이스가 제공하는 락을 활용한다. 낙관 vs 비관 두 개념은 각각 다음과 같은 장단점을 가지므로, 상황에 맞게 무엇을 사용할지 결정해야 한다. 낙관적 락은 일반적인 상황에서 성능이 더 좋으나, 충돌 발생시 이를 처리하기 번거롭다. 비관..
데이터베이스 시딩은 서비스 운영에 필요한 기본적인 데이터를 데이터베이스에 삽입하는 것을 의미한다. 결국 데이터베이스 초기 구성시 서비스에 반드시 필요한 계정이라거나, 포스트 등등을 데이터베이스에 들이 붓는 것! Prisma ORM에서는 seed.ts 파일과 prisma db seed 명령어를 통해 이러한 기능을 제공한다. Seeding your database Learn how to seed your database using Prisma's integrated seeding functionality and Prisma Client www.prisma.io
- Total
- Today
- Yesterday
- Linux
- eureka
- Java
- mysql
- etc
- AWS IoT
- Database
- terraform
- 코딩테스트
- Puppeteer
- JEST
- pgloader
- AWS
- Docker
- IntelliJ
- postgresql
- Vault
- Git
- Spring Cloud Config
- kotlin
- spring boot
- javascript
- jQuery
- hashicorp
- Node.js
- RancherDesktop
- shell
- JPA
- Gradle
- react
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |