트랜잭션의 격리 수준(isolation level) 여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지를 결정하는 것 격리 수준 Dirty Read Non-Repleatable Read Phantom Read READ UNCOMMITTED 발생 발생 발생 READ COMMITTED 없음 발생 발생 REPEATABLE READ 없음 없음 발생 (innoDB는 없음) SERIALIZABLE 없음 없음 없음 4개의 격리 수준에서 순서대로 뒤로 갈수록 각 트랜잭션 간의 데이터 격리(고립) 정도가 높아지며, 동시 처리 성능도 떨어지는 것이 일반적이다. 격리 수준이 높아질수록 MySQL 서버의 처리 성능이 많이 떨어질 것으로 생각하는 사용자가 ..
update query를 사용할 때, set절에 multi row가 입력되어야 하는 경우가 있습니다. update 대상 테이블 set 업데이트할 칼럼 = ( 업데이트 값 추출 서브 쿼리); ex) update MEMBER a set mod_date = ( select reg_date from MEMBER_HISTORY b where member_seq in (1,2,3) and a.member_seq = b.member_seq); MSSQL multiple row update https://055055.tistory.com/34 [MSSQL] multiple row update update query를 사용할 때, set절에 multi row가 입력되어야 하는 경우가 있습니다. update 대상 테이블 ..
한동안 JPA로 개발을 하다가 이직하며 오랜만에 mybatis로 개발을 하게 됐다. 기존 레거시 소스를 수정하는 부분이 있었는데 수정 후 아래와 같은 오류가 나타났다. mybatis invalid comparison: java.util.ArrayList and java.lang.String 왜 발생했을까.. 소스는 이런 형태이다. 변경 전 소스 AND ITEM_STATUS IN (${itemList}) 변경 후 소스 AND ITEM_STATUS IN #{item} itemList는 예전에는 String 타입으로 데이터를 A,B 이런식으로 강제로 넣어 줬었다. 이번에 소스를 수정하게 되며 기존에 java소스단에서 String으로 받던 것을 ArrayList로 받도록 하여 mybatis에서 foreach로 ..
MS-SQL은 기본 설정이 AUTO_COMMIT으로 되어있습니다. INSERT, UPDATE, DELETE 등 명령어를 사용할 때 COMMIT 명령어를 입력할 필요가 없습니다. 그렇기 때문에 UPDATE, DELETE 쿼리 수행 중 실수를 하게 된다면... 지옥을 경험할 수도 있습니다.. ㅠㅠ 예를 들어서 MEMBER라는 테이블이 있다고 가정하겠습니다. 멤버 테이블의 회원 삭제는 이력을 남기기 위해서 소프트 delete처리를 합니다. 이런일이 생기면 안되겠지만, 쿼리를 사용하여 회원을 삭제한다고 가정하겠습니다. UPDATE MEMBER SET DELETED = 1 WHERE MEMBER_SEQ = 1; 위와 같이 정상적으로 작성하면 좋겠지만, 우리는 사람이라 가끔 실수를 하곤 합니다. UPDATE MEM..
update query를 사용할 때, set절에 multi row가 입력되어야 하는 경우가 있습니다. update 대상 테이블 set 업데이트할 칼럼 = 업데이트 값 from 테이블 where 조건 ex) update MEMBER set MOD_DATE = a.REG_DATE from ( select MEMBER_SEQ, REG_DATE from MEMBER_HISTORY where MEMBER_SEQ IN(1,2,3)) a where MEMBER.MEMBER_SEQ = a.MEMBER_SEQ; oracle multiple row update https://055055.tistory.com/55 [ORACLE] multiple row update update query를 사용할 때, set절에 multi..
한 서버에서, A라는 데이터베이스에서 B라는 데이터베이스로 데이터를 옮겨야 하는 경우가 있습니다. 1. 테이블과 데이터 모두를 복사하는 쿼리 입니다. select * into 생성할 테이블 from 데이터베이스.스키마.원본테이블; 2. 테이블은 이미 생성되어있고, 데이터만 옮길 때 쿼리 입니다. SET IDENTITY_INSERT 데이터베이스.스키마.생성할테이블 ON INSERT Into 데이터베이스.스키마.생성할테이블 (컬럼1, 컬럼2) select 컬럼1, 컬럼2 from 데이터베이스.스키마.원본테이블; SET IDENTITY_INSERT 데이터베이스.스키마.생성할테이블 OFF * 옵션: SET IDENTITY_INSERT 테이블 ON / OFF : 자동증가값(sequence)를 설정한 컬럼에는 in..
업무를 보다가, 뭐가 잘 안된다는 연락을 받고 확인을 해봤습니다. ADDRESS 테이블에서 province로 groupby를 한 결과 입니다. 아래 쿼리와 같이 province로 group by를 쿼리로 하게 되면 총 7개의 그룹이 생깁니다. 그러나 실제 프로그램에서는 8개의 그룹이 생긴다고 해서.. 도대체 왜???? 이런 생각이 들었고 소스 코드를 보고 디버깅을 해봤습니다. 결과를 보니,.. 8개가 딱..... 그리고 확인을 해보니, province-3과 Province-3 이렇게.. 두개로 나뉘어 있었습니다. 아... ㅎㅎㅎ 위에는 자바 Stream의 Groupingby를 사용하여 grouping한 결과 입니다. 쿼리 결과물을 자세히 보면.. 대소문자가 막.. 섞여 있습니다. 즉 province-3과..
- Total
- Today
- Yesterday
- SpringBoot
- springboot https
- 뱅셀 유전자
- 슬랙 /
- effectivejava
- spring-boot-starter-data-redis
- 다중 업데이트
- Slack
- update set multi
- 이것이 자바다
- update query set multiple
- multiple row update
- 뱅크샐러드
- update query multi row
- vue.js
- update query mutiple row
- 그레이들
- 슬랙
- update set multiple
- update query
- 몽고DB 완벽가이드
- MSSQL
- gradle
- java
- visual studio code
- 싱글턴
- 이펙티브자바
- 슬랙봇
- 업데이트 쿼리
- 뱅크샐러드 유전자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |