머리말
지난번에는 SQL의 기본 내용을 모두 정리하려고 했지만, 어느새 시간이 흐르는 것을 느꼈습니다. 이 기사는 아래에서 계속됩니다.
문자 메시지
먼저, 필요한 테이블을 만들겠습니다
먼저 SQL 문장을 실행해 봅시다
이 코드는 0001의 잔여를 1000으로, 0002의 잔여를 1000으로 빼냅니다. 하지만 테이블을 만들 때 제약 조건을 추가했고, 잔액은 10 이상이어야 합니다.
결과는 다음과 같습니다:
그래서 이 코드 실행 오류: "UPDATE 문은 CHECK 제약 조건 "CH_balance"과 충돌합니다. 충돌은 데이터베이스 "DemoDb"에서 발생하며, "dbo" 테이블이 있습니다. 은행", '잔액' 열.” 。 한 문장이 오류라면, 다른 문장이 성공적으로 실행되었는지 여부를 판단합니다.
쿼리 결과는 다음과 같습니다:
다른 SQL 문장은 오류가 없지만 여전히 성공적으로 커밋되지 않는 것을 볼 수 있습니다. 여기 저희가 공개할 내용을 알려드리겠습니다.
#거래 내역
거래란 무엇인가요? 엄밀히 말해, 연산이 원자성, 지속성, 격리, 일관성을 만족한다면, 그 연산은 트랜잭션이라고 부릅니다. 트랜잭션을 자동으로 제출하기: SQL Server에서. 기본적으로 모든 SQL 문은 트랜잭션입니다. 트랜잭션 표시: 각 트랜잭션은 BEGIN TRANSACTION 문으로 명시적으로 시작하여 COMMIT 또는 ROLLBACK 문으로 명시적으로 종료됩니다.
위에서 언급한 데모는 롤백으로 끝났기 때문에 SQL 실행은 적용되지 않습니다. 데이터는 성공적으로 수정되지 않았습니다.
실제 개발 및 적용에서는 보통 비쿼리 문장 외부에 트랜잭션 계층을 설정하여 실제 필요에 따른 데이터의 무결성과 일관성을 보장합니다. 모두 하든지 아니면 하지 말든지 둘 중 하나입니다.
결함이 있는 SQL을 기록하는 두 가지 시스템 변수가 있습니다. - @@rowcount 영향을 받은 라인 수를 반환하며, 잘못된 인코딩을 반환@@error
이 두 시스템 변수를 사용해 SQL에 오류가 있는지 판단하고 위의 두 SQL 문장을 실행해 봅시다.
#저장 프로시저
의미: 수행되는 프로세스(복잡할 수 있음)를 이름으로 캡슐화한 후, 그 이름을 사용해 프로세스를 수행하는 것.
> 매개변수 없는 저장 프로시저
>매개변수가 있는 저장 프로시저
>반환 값이 있는 저장 프로시저
데이터베이스에서 잡아보세요
또한 이전 문서에서 언급한 페이지네이션에 관한 기본 매개변수를 가진 저장 프로시저도 있습니다.
에필로그
저장 프로시저는 실제 프로젝트에서 더 많이 사용되며, 많은 오래된 시스템들, 비즈니스 로직은 저장 프로시저로 작성되고 그 뒤에 있는 사람들이 유지하고 있습니다. 그들은 단지 몇 분 만에 앞에서 머리를 두드리고 싶어 합니다. 일반적으로 비즈니스 로직은 코드에 작성되지만, 데이터베이스에서 데이터 읽히는 횟수와 비즈니스 로직은 스토리지 프로세스에 작성됩니다. 작년에는 회사 프로젝트의 매우 복잡한 비즈니스 로직 연쇄가 스토리지 프로세스로 옮겨져 속도가 수십 배 증가했습니다. 물론, 특별한 사정은 특별히 다뤄집니다. 구체적인 적용은 실제 상황에 따라 다릅니다.
(참고: 위 내용은 올해의 학습 노트입니다. 부적절한 부분이 있으면 꼭 수정해 주세요!) )
|