> 데이터 베이스 > MySQL 튜토리얼 > T-SQL에서 원자적이고 안정적인 행 업데이트를 보장하는 방법은 무엇입니까?

T-SQL에서 원자적이고 안정적인 행 업데이트를 보장하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-07 12:52:41
원래의
765명이 탐색했습니다.

How to Ensure Atomic and Reliable Row Updates in T-SQL?

T-SQL에서 원자적이고 안정적인 행 업데이트 보장

데이터 관리 영역에서는 종종 업데이트를 수행하기 전 행. 이는 데이터 무결성과 원자성이 가장 중요한 시나리오에서 특히 중요합니다. 이 기사에서는 테이블에 행이 있는지 확인하고, 없으면 단일 트랜잭션 범위 내에서 삽입하는 신뢰할 수 있는 접근 방식을 살펴봅니다.

원자적이고 신뢰할 수 있는 행 업데이트

초과 예약을 방지하고 각 예약의 신뢰성을 보장하는 것이 필수적인 예약 시스템을 고려해보세요. 이 기능을 구현하려면 두 작업(업데이트 또는 삽입)이 모두 성공적으로 실행되거나 둘 다 롤백되어 데이터 무결성을 유지하도록 보장하는 원자적이고 안정적인 접근 방식이 필요합니다.

코드 검사

제공된 코드 조각은 Bookings 테이블의 행 업데이트를 시도합니다. 그러나 행이 존재하지 않으면 시나리오를 올바르게 처리하지 못합니다. 또한 기존 행을 확인하기 위해 쿼리에 @@ROWCOUNT를 사용하면 데이터 불일치 문제가 발생합니다.

향상된 코드 구현

이러한 문제를 수정하고 원하는 동작을 보장하려면, 수정된 코드가 표시됩니다 아래:

-- Initiate transaction (assuming SQL Server)
BEGIN TRANSACTION

-- Attempt to update row
UPDATE Bookings
SET TicketsBooked = TicketsBooked + @TicketsToBook
WHERE FlightId = @Id AND TicketsMax >= (TicketsBooked + @TicketsToBook)

-- Check if row updated
IF @@ROWCOUNT = 0
BEGIN
    -- Insert new row (if row doesn't exist)
    INSERT INTO Bookings ... (omitted)
END

-- Transaction completion (commit or rollback based on result)
IF @@ERROR = 0
BEGIN
    COMMIT TRANSACTION
    SELECT 1 AS Result -- Return true (if transaction committed)
END
ELSE
BEGIN
    ROLLBACK TRANSACTION
    SELECT 0 AS Result -- Return false (if transaction failed)
END
로그인 후 복사

설명

이 향상된 코드에는 몇 가지 중요한 수정 사항이 포함되어 있습니다.

  • 다음과 같은 사항을 확인하기 위해 보다 명시적인 접근 방식을 사용합니다. IF EXISTS 절을 사용하여 행이 존재하므로 잘못된 삽입을 효과적으로 방지할 수 있습니다.
  • 업데이트 문은 다음을 보장합니다. 업데이트된 티켓 수가 허용된 최대값을 초과하는지 확인하여 초과 예약을 방지합니다.
  • 트랜잭션 처리는 원자적 동작을 보장하여 두 작업이 모두 발생하거나 발생하지 않도록 보장하여 데이터 일관성을 유지합니다.
  • 트랜잭션 결과는 트랜잭션이 성공적으로 커밋되면 1(true)로, 실패하면 0(false)으로 명시적으로 반환되어 원하는 반환 값을 제공합니다.

위 내용은 T-SQL에서 원자적이고 안정적인 행 업데이트를 보장하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿