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

Cách sử dụng bảng đã chèn \ đã xóa trong thủ tục được lưu trữ?

Bạn có thể sử dụng tham số có giá trị bảng để lưu trữ các giá trị đã chèn / xóa khỏi trình kích hoạt và chuyển nó cho proc. ví dụ:nếu tất cả những gì bạn cần trong chương trình của mình là FileID's :

CREATE TYPE FileIds AS TABLE
(
    FileId INT
);

-- Create the proc to use the type as a TVP
CREATE PROC commonProc(@FileIds AS FileIds READONLY)
    AS
    BEGIN
        UPDATE at
            SET at.DateVersion = CURRENT_TIMESTAMP
        FROM ATable at
            JOIN @FileIds fi
            ON at.FileID = fi.FileID;
    END

Và sau đó chuyển các id đã chèn / xóa khỏi trình kích hoạt, ví dụ:

CREATE TRIGGER MyTrigger ON SomeTable FOR INSERT
AS
    BEGIN
        DECLARE @FileIds FileIDs;
        INSERT INTO @FileIds(FileID)
            SELECT DISTINCT FileID FROM INSERTED;
        EXEC commonProc @FileIds;
    END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng hợp bitwise HOẶC trong một truy vấn con

  2. Không thể kết nối với localhost, nhưng có thể với tên máy tính trong SQL Server 2008

  3. Tại sao tôi nhận được Thủ tục mong đợi tham số '@statement' thuộc loại 'ntext / nchar / nvarchar'. khi tôi cố gắng sử dụng sp_executesql?

  4. Lỗi máy chủ SQL 113:Thiếu dấu chú thích cuối ‘* /’

  5. Đặt trống trong cột máy chủ sql với kiểu dữ liệu số nguyên