Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 자바스크립트
- Spring
- Intellij
- JS
- 스프링
- 컴포넌트
- javascript
- component
- mssql
- reactjs
- GIT
- restapi
- 데이터베이스
- EXTJS
- 개발
- springboot
- 쿼리
- sql
- java
- DATABASE
- table
- Vue
- 자바
- 개발공부
- jdk
- React
- 보안취약점
- 리액트
- crud
- 스프링부트
Archives
- Today
- Total
준준의 기록일지
[mssql] trigger가 제대로 걸리지 않는 문제 본문
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Trigger을 테이블에 생성하고 실행을 했는데, 기존 테이블에서 insert/update/delete가 수행될 때 문제가 발생하는 현상이 있었다.
이때 SET XACT_ABORT OFF 로 해당 문제가 발생해도 전체가 아닌 하나만 롤백되고 메세지를 넘겨주는 작업을 했다.
사실 SET XACT_ABORT OFF만 하면 된다고 했지만, 나는 명령은 잘 실행되도 기존 테이블 수행에 대한 문제는 여전히 가지고 있었다.
이 문제 해결법은 바로 TRY/CATCH문!
아래와 같이 try/catch 코드를 넣고 그 사이에 원하는 쿼리문을 넣으면 기존 테이블이 정상 동작하는 것을 확인했다.
조금 의아한건, catch문에 잡히는 오류가 없다는 것.
trigger를 넣는 데이터베이스가 Citrix라 그런것인지 거기에 따른 권한이나?어떤 예외 상황에 대한 처리를 하도록 쿼리가 짜져야 되는건 아닌가 싶다.
SET XACT_ABORT OFF
BEGIN TRY
-- SELECT convert(int, a) FROM inserted
SELECT 1 / 0
END TRY
BEGIN CATCH
IF xact_state() = -1 ROLLBACK TRANSACTION
PRINT error_message()
END CATCH
출처
에러에 대한 질의
사용방법
'Database' 카테고리의 다른 글
[DB] 데이터베이스 이중화 (0) | 2021.01.04 |
---|---|
[MSSQL] group by 대신 사용하는 over partition by (0) | 2020.12.10 |
[sql] 전체 데이터베이스 특정 컬럼 찾기 (0) | 2020.11.10 |
[mssql] update select 동시 작업 (0) | 2020.11.02 |
[mssql] trigger (0) | 2020.10.27 |