Trong SQL Server, có thể sử dụng hàm định giá trị bảng (TVF) để xóa dữ liệu khỏi các bảng bên dưới mà TVF truy vấn.
Để xóa dữ liệu bảng qua TVF, chỉ cần sử dụng cùng một T-SQL DELETE
cú pháp mà bạn sẽ sử dụng nếu xóa trực tiếp một hàng khỏi bảng.
Ví dụ
Dưới đây là một ví dụ nhanh để chứng minh.
Chức năng
Đây là một hàm định giá bảng nội tuyến nhanh chóng để chọn dữ liệu cơ bản từ một bảng.
CREATE FUNCTION dbo.udf_Cats_ITVF() RETURNS TABLE AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats ); GO
Hàm này chọn tất cả các hàng từ một bảng.
Tôi cũng có thể sử dụng chức năng này để xóa các hàng khỏi bảng đó.
Chọn Dữ liệu bằng Hàm
Đây là cách chúng tôi thường gọi hàm với SELECT
tuyên bố. Điều này cho phép chúng tôi xem dữ liệu hiện tại trong bảng bên dưới.
SELECT * FROM udf_Cats_ITVF();
Kết quả:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Vì vậy, có năm hàng.
Hãy xóa Scratchy.
Xóa Hàng qua Hàm
Bây giờ, hãy sử dụng TVF để xóa một hàng.
DELETE FROM udf_Cats_ITVF() WHERE CatId = 5; SELECT * FROM udf_Cats_ITVF();
Kết quả:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Vì vậy, tôi đã xóa Scratchy thành công bằng cách sử dụng hàm giá trị bảng nội tuyến.