Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách lấy số hàng được chèn bởi một giao dịch

@@ ROWCOUNT sẽ cung cấp số hàng bị ảnh hưởng bởi cuối cùng Câu lệnh SQL, tốt nhất là nắm bắt nó thành một biến cục bộ sau lệnh được đề cập, vì giá trị của nó sẽ thay đổi vào lần tiếp theo bạn nhìn vào nó:

DECLARE @Rows int
DECLARE @TestTable table (col1 int, col2 int)
INSERT INTO @TestTable (col1, col2) select 1,2 union select 3,4
SELECT @[email protected]@ROWCOUNT
SELECT @Rows AS Rows,@@ROWCOUNT AS [ROWCOUNT]

ĐẦU RA:

(2 row(s) affected)
Rows        ROWCOUNT
----------- -----------
2           1

(1 row(s) affected)

bạn nhận được Rows giá trị là 2, số hàng được chèn, nhưng ROWCOUNT là 1 vì SELECT @[email protected]@ROWCOUNT lệnh bị ảnh hưởng 1 hàng

nếu bạn có nhiều CHÈN hoặc CẬP NHẬT, v.v. trong giao dịch của mình, bạn cần xác định cách bạn muốn "đếm" những gì đang diễn ra. Bạn có thể có một tổng riêng cho mỗi bảng, một tổng giá trị lớn duy nhất hoặc một cái gì đó hoàn toàn khác. Bạn sẽ cần KHAI BÁO một biến cho mỗi tổng số bạn muốn theo dõi và thêm vào đó sau mỗi thao tác áp dụng cho nó:

--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 @[email protected][email protected]@ROWCOUNT

INSERT INTO Apple (col1, col2) Select col1,col2 from abc where ...
SET @[email protected][email protected]@ROWCOUNT

INSERT INTO Peach (col1, col2) Select col1,col2 from xyz where ...
SET @[email protected][email protected]@ROWCOUNT

INSERT INTO Peach (col1, col2) Select col1,col2 from abc where ...
SET @[email protected][email protected]@ROWCOUNT

COMMIT

SELECT @AppleTotal AS AppleTotal, @PeachTotal AS PeachTotal


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khung thực thể Lập chỉ mục TẤT CẢ các cột khóa ngoại

  2. Cách gọi thủ tục được lưu trữ với SQLAlchemy yêu cầu tham số Bảng kiểu do người dùng xác định

  3. Tạo cột “Sửa đổi lần cuối” trong SQL Server

  4. Có gì mới trong SQL Server 2019?

  5. Sao chép một tập hợp con dữ liệu đã lọc:Hợp nhất hay Sao chép giao dịch?