sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan bruger man indsat\slettet tabel i lagret procedure?

Du kan bruge en tabelværdi parameter for at gemme de indsatte/slettede værdier fra triggere og videregive dem til proc. f.eks. hvis alt hvad du har brug for i din proc er UNIKKE 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

Og send derefter de indsatte/slettede id'er fra triggeren, f.eks.:

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. Kopier/dupliker database uden at bruge mysqldump

  2. Hvad er fordelene ved at arbejde med en Access Support-virksomhed?

  3. Sådan bruger du graphql-type-json-pakken med GraphQl

  4. Topfunktioner at se efter i et SQL Server-overvågningsværktøj