sql >> Base de Datos >  >> RDS >> Sqlserver

Eliminar datos a través de una función con valores de tabla en SQL Server

En SQL Server, es posible usar una función con valores de tabla (TVF) para eliminar datos de las tablas subyacentes que consulta TVF.

Para eliminar los datos de la tabla a través de un TVF, simplemente use el mismo T-SQL DELETE sintaxis que usaría si eliminara una fila de la tabla directamente.

Ejemplo

Aquí hay un ejemplo rápido para demostrarlo.

La Función

Aquí hay una función rápida con valores de tabla en línea que selecciona datos básicos de una tabla.

CREATE FUNCTION dbo.udf_Cats_ITVF()
    RETURNS TABLE
AS
RETURN (
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats
    );
GO

Esta función selecciona todas las filas de una tabla.

También puedo usar esta función para eliminar filas de esa tabla.

Seleccionar datos con la función

Así es como normalmente invocaríamos la función con un SELECT declaración. Esto nos permite ver los datos actuales en la tabla subyacente.

SELECT * FROM udf_Cats_ITVF();

Resultado:

+---------+-----------+------------+
| CatId   | CatName   | Phone      |
|---------+-----------+------------|
| 1       | Garfield  | 9871237654 |
| 2       | Felix     | 8871237651 |
| 3       | Tom       | 7871237652 |
| 4       | Fetch     | 6871237653 |
| 5       | Scratchy  | 1111111111 |
+---------+-----------+------------+

Así que hay cinco filas.

Eliminemos Scratchy.

Eliminar una fila a través de la función

Ahora usemos el TVF para eliminar una fila.

DELETE FROM udf_Cats_ITVF()
WHERE CatId = 5;   

SELECT * FROM udf_Cats_ITVF();

Resultado:

+---------+-----------+------------+
| CatId   | CatName   | Phone      |
|---------+-----------+------------|
| 1       | Garfield  | 9871237654 |
| 2       | Felix     | 8871237651 |
| 3       | Tom       | 7871237652 |
| 4       | Fetch     | 6871237653 |
+---------+-----------+------------+

Así que eliminé Scratchy con éxito usando la función de valores de tabla en línea.