2012-07-03 47 views
5

Tôi đã tạo một kích hoạt on update.Tần suất cập nhật kích hoạt kích hoạt bản cập nhật nhiều bản ghi?

Nếu tôi đang cập nhật 5 bản ghi trong bảng trong một câu lệnh, trình kích hoạt sẽ kích hoạt bao nhiêu lần? Nó có thay đổi nếu tôi có nhiều câu lệnh cập nhật các bản ghi trong một giao dịch không?

Thực thi 5 lần hay chỉ một lần sau khi tất cả các giao dịch được hoàn tất?

+3

Bạn đang sử dụng máy chủ cơ sở dữ liệu nào? Oracle, Sybase, SqlServer, khác? –

+1

Bạn đang sử dụng RDBMS nào ?. Dù sao, nếu bản cập nhật của bạn là một giao dịch, thì bất kể có bao nhiêu bản ghi được cập nhật (tốt, nếu ít nhất một bản ghi), thì trình kích hoạt sẽ thực thi sau khi – Lamak

+1

@Lamak: không đúng sự thật. Nó phụ thuộc vào việc nó là một cấp độ hàng hoặc một trình kích hoạt mức báo cáo (tất nhiên nó cũng phụ thuộc vào DBMS, một số không hỗ trợ trình kích hoạt mức hàng) –

Trả lời

9

Tất cả phụ thuộc vào loại trình kích hoạt bạn đang sử dụng.

  • liên tiếp mức độ kích hoạt sẽ cháy cho mỗi và mọi hàng đó bị ảnh hưởng bởi tuyên bố DML (lưu ý điều này cũng đúng cho INSERT báo cáo được dựa trên một SELECT hoặc đang sử dụng một cú pháp đa hàng để chèn hơn nhiều hơn một hàng tại một thời điểm)
  • trình kích hoạt mức báo cáo sẽ kích hoạt một lần cho toàn bộ câu lệnh.

Oracle, PostgreSQL và DB2 hỗ trợ cả trình kích hoạt cấp hàng và cấp độ tuyên bố. Microsoft SQL Server chỉ hỗ trợ trình kích hoạt mức báo cáo và MySQL chỉ hỗ trợ trình kích hoạt cấp hàng.

0

Xem xét bạn đang sử dụng SQL Server, trình kích hoạt sẽ chỉ kích hoạt mỗi lần cập nhật.

Nếu đây không phải là những gì bạn muốn, bạn có thể xem xét sử dụng các câu lệnh cập nhật khác nhau để đảm bảo trình kích hoạt kích hoạt mọi lúc.

Bạn có thể xem this turorial về trình kích hoạt SQL. Nó bao gồm mọi thứ.

Lưu ý rằng nếu bạn đang sử dụng Oracle, trình kích hoạt có thể dựa trên các hàng. Không phải trong SQL Server.

2

Với SQL 2008: Nếu bạn đang thực hiện 1 cập nhật cập nhật 5 hàng, trình kích hoạt sẽ chỉ được thực hiện một lần.

Đó là lý do tại sao bạn phải sử dụng các bảng "INSERTED" và "DELETED" để có thể phát hiện tất cả các hàng đã sửa đổi.

Nếu bạn đang thực hiện 5 cập nhật cập nhật 1 hàng, trình kích hoạt sẽ được thực thi 5 lần.

Các vấn đề liên quan