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

Chèn trình kích hoạt SQL từ nhiều bảng

Bạn không tham chiếu đến các bảng đã chèn hoặc đã xóa chỉ có sẵn trong trình kích hoạt, vì vậy tất nhiên bạn sẽ trả về nhiều bản ghi hơn mà bạn cần trong truy vấn của mình.

Khi lần đầu tiên viết trình kích hoạt, những gì tôi làm là tạo một bảng tạm gọi là #inserted (và / hoặc #deleted) và điền vào nó một số bản ghi. Nó phải phù hợp với thiết kế của bảng mà trình kích hoạt sẽ bật. Điều quan trọng là làm cho bảng tạm thời của bạn có một số bản ghi đầu vào có thể đáp ứng các tiêu chí khác nhau ảnh hưởng đến truy vấn của bạn (vì vậy, trong trường hợp của bạn, bạn muốn một số trong đó số trường hợp sẽ là 0 và một số trường hợp sẽ không) và đó sẽ là điển hình dữ liệu được chèn vào bảng hoặc init được cập nhật. Trình kích hoạt máy chủ SQL hoạt động trên tập hợp dữ liệu, do đó, điều này cũng đảm bảo rằng trình kích hoạt của bạn có thể xử lý đúng cách nhiều lần cập nhật hoặc uiinserts của bản ghi. Trình kích hoạt được viết đúng cách sẽ có các trường hợp thử nghiệm mà bạn cần kiểm tra để đảm bảo mọi thứ diễn ra chính xác, bảng #inserted của bạn phải bao gồm các bản ghi đáp ứng tất cả các trường hợp thử nghiệm đó.

Sau đó, viết truy vấn trong một giao dịch (và quay lại trong khi bạn đang thử nghiệm) tham gia vào #inserted. Nếu bạn đang thực hiện chèn với một vùng chọn, chỉ viết phần được chọn cho đến khi bạn hiểu đúng, sau đó thêm phần chèn. Để thử nghiệm, hãy viết một lựa chọn từ bảng bạn đang chèn để xem dữ liệu bạn đã chèn trước khi khôi phục.

Sau khi bạn làm mọi thứ hoạt động, hãy thay đổi các tham chiếu #inserted thành đã chèn, xóa bất kỳ mã thử nghiệm nào và tất nhiên là quá trình khôi phục (có thể là toàn bộ giao dịch khắc phục những gì bạn đang làm.) Và thêm drop và tạo phần kích hoạt của mã. Bây giờ, bạn có thể kiểm tra bạn kích hoạt như một trình kích hoạt, nhưng bạn đang ở trong tình trạng tốt vì bạn biết rằng nó có khả năng hoạt động từ thử nghiệm trước đó của bạn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dbo chính của SQL Server không tồn tại,

  2. Tìm hiểu xem một đối tượng có phải là một bảng do người dùng xác định trong SQL Server với OBJECTPROPERTY ()

  3. Khắc phục “tên hồ sơ không hợp lệ” khi gửi thư từ máy chủ SQL

  4. Truy vấn Transpose tạo các nút (SQL Server 2008)

  5. Làm cách nào để đặt chuỗi kết nối theo chương trình cho Entity-Framework Code-First?