본문 바로가기
728x90

dbms 3

Transaction - 트랜잭션 이번 글에서는 Transaction (이하 트랜잭션) 이라는 것에 대해 말해보겠다. 본인도 트랜잭션을 알게 된지는 그리 오래되지 않았다. 그리고 그 필요성도 딱히 느끼지 못 했었다. 따라서, 혼자 개발 공부할 때에는 트랜잭션을 사용하지 않았다. 하지만 회사 프로젝트에서는 대부분 트랜잭션을 사용하고 있었다. 그래서 트랜잭션을 좀 더 관심있게 보게 됐다. 사실, 회사에서 쓸 프로젝트에 본인이 Stored Procedure를 개발할 일이 있었는데 이 때 트랜잭션을 쓰지 않고 개발했다가 혼이 났다 ㅎㅎㅎ 그래서 실수를 다시 하지 않기 위해 기록을 남기겠다. 여기선, 트랜잭션이란 무엇이며 왜 그리고 언제 사용하는가? 에 대해 다뤄보겠다. (트랜잭션의 역사나 유래나 이런 것은 잘 모른다. 이건 자료를 찾아봐야하는데.. 2020. 11. 13.
JOIN 문제 해결 앞서 살펴본 tables 간의 관계로 인한 Join 문제가 있었다. 1:N의 data가 생기면 어떤 data를 filtering해야 원하는 data가 나올까... 자! 이제 그 해결방법을 알아보자. 먼저 본인이 고민하고 고민해서 작성한 query는 아래와 같았다. SELECTSV.ServerName ,SV.ServerIP ,SV.AccountInfo = CASE WHEN EXISTS(SELECT * FROM dbo.ServersPermissions AS SVP INNER JOIN dbo.Users AS US ON (SVP.PermitTo = US.UserNo) WHERE SV.VMName = SVP.VMName AND US.PersonNo = @LoggedUser) THEN 'ID: ' + SV.Acco.. 2020. 11. 11.
문자+숫자 DB 컬럼 정렬하기 DB 컬럼을 정렬할 때 간혹 컬럼 data가 문자+숫자로 되어 있어서 정렬이 이상하게 될 때가 있다. 가령 아래와 같다. SELECT * FROM VirtualMachines; 이런 경우에는 SELECT * FROM VirtualMachines ORDER BY VMName; 이렇게 수행해도 같은 결과가 나온다. 숫자의 정렬방식은 1, 10, 2, 3, 4, 5, 50 ... 이런 식이기 때문이다. 그럼 어떻게 변경해야할까? SELECT * FROM VirtualMachines ORDER BY LEN(VMName), VMName; 이런식으로 변경해주면 된다. LEN 이란 문자열의 길이를 반환해주는 함수이다. (같이 알아두면 좋은 것은 DATALENGTH 함수이니, 찾아보길 바란다.) 문자열의 길이로 먼저 .. 2020. 11. 9.
728x90