트랜잭션에서 삽입된 행 수를 가져오는 방법
트랜잭션에 의해 삽입된 행 수를 확인해야 하는 로그를 관리해야 합니다.그것을 역동적으로 할 수 있는 방법이 있습니까?
@@ROWCOUNT는 마지막 SQL 문의 영향을 받는 행 수를 제공합니다. 다음 번에 볼 때 값이 변경되므로 해당 명령에 따라 로컬 변수로 캡처하는 것이 가장 좋습니다.
DECLARE @Rows int
DECLARE @TestTable table (col1 int, col2 int)
INSERT INTO @TestTable (col1, col2) select 1,2 union select 3,4
SELECT @Rows=@@ROWCOUNT
SELECT @Rows AS Rows,@@ROWCOUNT AS [ROWCOUNT]
출력:
(2 row(s) affected)
Rows ROWCOUNT
----------- -----------
2 1
(1 row(s) affected)
당신은Rows
값 2, 삽입된 행의 수, 그러나 ROWCOUNT는 1입니다. 왜냐하면SELECT @Rows=@@ROWCOUNT
명령이 영향을 받는 1개 행
트랜잭션에 여러 개의 INSERT 또는 UPDATE 등이 있는 경우, 현재 진행 중인 작업을 "계산"할 방법을 결정해야 합니다.각 테이블에 대해 별도의 총계를 가질 수도 있고, 단일 총계 값을 가질 수도 있고, 완전히 다른 값을 가질 수도 있습니다.추적할 각 합계에 대해 변수를 선언하고 해당 변수에 적용되는 각 작업에 따라 변수에 추가해야 합니다.
--note there is no error handling here, as this is a simple example
DECLARE @AppleTotal int
DECLARE @PeachTotal int
SELECT @AppleTotal=0,@PeachTotal=0
BEGIN TRANSACTION
INSERT INTO Apple (col1, col2) Select col1,col2 from xyz where ...
SET @AppleTotal=@AppleTotal+@@ROWCOUNT
INSERT INTO Apple (col1, col2) Select col1,col2 from abc where ...
SET @AppleTotal=@AppleTotal+@@ROWCOUNT
INSERT INTO Peach (col1, col2) Select col1,col2 from xyz where ...
SET @PeachTotal=@PeachTotal+@@ROWCOUNT
INSERT INTO Peach (col1, col2) Select col1,col2 from abc where ...
SET @PeachTotal=@PeachTotal+@@ROWCOUNT
COMMIT
SELECT @AppleTotal AS AppleTotal, @PeachTotal AS PeachTotal
로그/감사에 대한 추가 정보가 필요한 경우 다음을 출력할 수 있습니다.이렇게 하면 영향을 받는 행 수뿐만 아니라 어떤 레코드도 유지할 수 있습니다.
삽입 중 출력 절의 예로 SQL Server 삽입 ID 목록을 들 수 있습니다.
DECLARE @InsertedIDs table(ID int);
INSERT INTO YourTable
OUTPUT INSERTED.ID
INTO @InsertedIDs
SELECT ...
HTH
저는 5월 이전 게시물에 대한 답변을 찾았습니다.여기 있어요.
CREATE TABLE #TempTable (id int)
INSERT INTO @TestTable (col1, col2) OUTPUT INSERTED.id INTO #TempTable select 1,2
INSERT INTO @TestTable (col1, col2) OUTPUT INSERTED.id INTO #TempTable select 3,4
SELECT * FROM #TempTable --this select will chage @@ROWCOUNT value
사용할 수 있습니다.@@trancount
MSSQL에서
설명서에서 다음을 참조하십시오.
현재 연결에서 발생한 BEGIN TRANSACTION 문 수를 반환합니다.
언급URL : https://stackoverflow.com/questions/2272733/how-to-get-number-of-rows-inserted-by-a-transaction
'programing' 카테고리의 다른 글
Python에서 파일 해싱 (0) | 2023.06.30 |
---|---|
Git 하위 모듈 헤드 '참조가 트리가 아닙니다' 오류 (0) | 2023.06.30 |
Python을 사용하여 Windows 인증으로 MS SQL Server에 연결하시겠습니까? (0) | 2023.06.30 |
esc_url() 및 워드프레스 보안? (0) | 2023.06.30 |
상태를 참조하지 않는 제네릭 돌연변이에서도 vuex가 제대로 작동할까요? (0) | 2023.06.30 |