sql >> データベース >  >> RDS >> Sqlserver

SQLServerのテーブル値関数を介してデータを削除する

    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 |
    +---------+-----------+------------+
    

    したがって、5つの行があります。

    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を正常に削除しました。


    1. データガバナンスにおけるデータアーキテクトの役割を理解する

    2. SQLDeveloperが起動しない

    3. MSSQLからPostgreSQLへの移行-知っておくべきこと

    4. SQLServer2005でのデッドロックの診断