В SQL Server е възможно да се използва функция с стойност на таблица (TVF) за изтриване на данни от основните таблици, които TVF заявява.
За да изтриете данните от таблицата чрез TVF, просто използвайте същия T-SQL DELETE
синтаксис, който бихте използвали, ако изтривате ред от таблицата директно.
Пример
Ето един бърз пример за демонстрация.
Функцията
Ето бърза вградена функция с таблица, която избира основни данни от таблица.
CREATE FUNCTION dbo.udf_Cats_ITVF() RETURNS TABLE AS RETURN ( SELECT CatId, CatName, Phone FROM dbo.Cats ); GO
Тази функция избира всички редове от таблица.
Мога също да използвам тази функция, за да изтрия редове от тази таблица.
Изберете данни с функцията
Ето как обикновено извикваме функцията с SELECT
изявление. Това ни позволява да видим текущите данни в основната таблица.
SELECT * FROM udf_Cats_ITVF();
Резултат:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | | 5 | Scratchy | 1111111111 | +---------+-----------+------------+
Така че има пет реда.
Нека изтрием Scratchy.
Изтриване на ред чрез функцията
Сега нека използваме TVF, за да изтрием ред.
DELETE FROM udf_Cats_ITVF() WHERE CatId = 5; SELECT * FROM udf_Cats_ITVF();
Резултат:
+---------+-----------+------------+ | CatId | CatName | Phone | |---------+-----------+------------| | 1 | Garfield | 9871237654 | | 2 | Felix | 8871237651 | | 3 | Tom | 7871237652 | | 4 | Fetch | 6871237653 | +---------+-----------+------------+
Така че успешно изтрих Scratchy с помощта на вградената функция с таблица.