2011-10-19 46 views
7

Dường như chúng được cho phép vì tôi có thể thấy cả trình kích hoạt chèn của tôi được liệt kê bên dưới bảng có các tên khác nhau. Nó có phổ biến hay là một thực hành không tốt? Tôi đang sử dụng SQL Server 2005Tôi có thể có hai trình kích hoạt chèn khác nhau trên cùng một bảng không?

+0

Trình kích hoạt sẽ làm gì? Bảng 'INSERTED' không được lập chỉ mục để các lý do hiệu suất có thể tốt hơn để hợp nhất chúng. –

Trả lời

11

Có, bạn chắc chắn có thể có nhiều trình kích hoạt cho mỗi thao tác, ví dụ: AFTER INSERT hoặc AFTER UPDATE v.v. Nó có ý nghĩa để chia các mối quan tâm riêng biệt thành các đoạn mã riêng biệt, nhỏ, có thể quản lý được.

Điều bạn không thể dựa vào là chúng sẽ được thực thi theo thứ tự nhất định - thứ tự mà các trình kích hoạt thực sự được thực hiện cũng không phải ổn định, tức là mọi lúc.

+3

Phụ thuộc vào RDBMS. Postgres đảm bảo nhiều trình kích hoạt được gọi theo thứ tự tên alpha. Họ nhà nước tiêu chuẩn SQL (hiếm khi theo sau) là theo thứ tự sáng tạo. –

+1

@AndrewLazarus: Tôi đã đề cập đến SQL Server (kể từ khi OP hỏi về điều đó), và SQL Server không có bất kỳ khả năng như vậy. Cảm ơn bạn đã chỉ ra điều đó! –

+0

Tuyệt đối. Tôi thường thêm các ghi chú giống như việc tìm người đến đây từ Google rất nhiều. –

2

đó là phương pháp hay vì bạn có thể chia nhỏ các thay đổi của mình theo thời gian thành các đoạn nhỏ (nhanh nhẹn) và thêm hoặc xóa chúng độc lập với nhau.

+0

BTW nếu tôi chèn 2 hoặc nhiều hàng cùng một lúc (về cơ bản tôi đang nhập một loạt các bản ghi), có cách nào tôi có thể tham chiếu M EI chèn, hoặc kích hoạt được tự động thực thi cho mỗi lần chèn không? –

+1

@hmd trigger sẽ được tự động thực hiện cho mỗi lần chèn đơn lẻ cho đến khi trừ khi bạn đang sử dụng chèn hàng loạt trong đó trình kích hoạt sẽ được thực hiện một lần cho mỗi lệnh chèn số lượng lớn. – Niraj

+0

Biết đó là một câu hỏi cũ! Trong trình kích hoạt của bạn, bạn luôn có thể tham chiếu đến bảng được gọi là "được chèn" chứa tất cả các hàng bạn vừa chèn (là một hoặc nhiều hàng trên trình kích hoạt chèn). Và bằng cách tạo con trỏ, bạn có thể lặp qua từng hàng của bạn và thực hiện các công cụ cho chúng nếu bạn muốn. – olf

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