создавать trigger для sql server

Я немного новый в sql server, и у меня есть таблица, которую называются клиенты. то, что я хочу, состоит в том, чтобы создавать trigger, что, когда клиенты удаляют реестр моей таблицы, trigger ввел этот реестр, удаленный в моей исторической таблице. Не, как делание этого помогает!

0
задан 19.03.2019, 15:36
1 ответ

triggers (для DML) - хранившиеся процедуры, у которых есть 2 caracterГ-sticas главные. Они работают внутри той же самой transacciГіn, что освобождает их, и они имеют доступ к специальным подмосткам inserted и deleted. Когда он происходит, один INSERT использует таблицу inserted, когда он происходит, один DELETE использует таблицу deleted, и когда происходит один UPDATE, используются оба подмостков для того, чтобы получать предыдущую стоимость и новых. Эти подмостки только считают линии затронутыми ею operaciГіn, из-за которого он mГЎs просто контролировать их. AquГ - я оставляю пример как делать trigger auditorГ - в для одного DELETE.

CREATE TABLE EjemploClientes(
    idCliente   int,
    NombreCliente   varchar(100),
    FechaAlta       date);

CREATE TABLE EjemploClientesBorrados(
    idCliente   int,
    NombreCliente   varchar(100),
    FechaAlta       date,
    FechaBorrado    datetime,
    Usuario         sysname);

GO
CREATE TRIGGER TD_EjemploClientes ON EjemploClientes
FOR DELETE
AS
BEGIN TRY
    INSERT INTO EjemploClientesBorrados(
        idCliente       ,
        NombreCliente   ,
        FechaAlta       ,
        FechaBorrado    ,
        Usuario         )
    SELECT idCliente,
        NombreCliente,
        FechaAlta,
        GETDATE(),
        SUSER_SNAME()
    FROM deleted;
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION;

    THROW;
END CATCH;
GO

INSERT INTO EjemploClientes
VALUES( 1, 'Cliente 1', GETDATE()-3),
      ( 2, 'Cliente 2', GETDATE()-2),
      ( 3, 'Cliente 3', GETDATE()-1);

SELECT * FROM EjemploClientes;
SELECT * FROM EjemploClientesBorrados;

GO
DELETE EjemploClientes WHERE idCliente < 3;
GO

SELECT * FROM EjemploClientes;
SELECT * FROM EjemploClientesBorrados;

GO
DROP TABLE EjemploClientes, EjemploClientesBorrados;

HabrГ - В показанный видеть она documentaciГіn Microsoft , но примеры не являются совсем хорошими.

1
ответ дан 02.12.2019, 05:27

Теги

Похожие вопросы