Подтвердить что ты не робот

Sql Server запускает значения вставки из новой строки в другую таблицу

У меня есть сайт, использующий схему членства asp.net. Я хотел бы настроить триггер в таблице aspnet_users, который добавил user_id и имя_пользователя новой строки в другую таблицу.

Как мне получить значения из последней вставки?

Я могу выбрать последнее значение date_created, но это кажется вонючим. Есть ли лучший способ?

4b9b3361

Ответ 1

попробуйте это для сервера sql

CREATE TRIGGER yourNewTrigger ON yourSourcetable
FOR INSERT
AS

INSERT INTO yourDestinationTable
        (col1, col2    , col3, user_id, user_name)
    SELECT
        'a'  , default , null, user_id, user_name
        FROM inserted

go

Ответ 2

В триггере используется триггер вставки, вставленные элементы строки будут отображаться как логическая таблица INSERTED, которая имеет тот же макет столбца, что и таблица, на которой установлен триггер.

У удаления триггеров есть доступ к аналогичной логической таблице с именем DELETED.

У триггеров обновлений есть доступ к таблице INSERTED, содержащей обновленные значения и таблицу DELETED, которая содержит значения, подлежащие обновлению.

Ответ 3

Вы можете использовать OLD и NEW в триггере для доступа к тем значениям, которые были изменены в этом триггере. Mysql Ref

Ответ 4

В триггере SQL Server у вас есть два psdeuotables, которые называются вставленными и удаленными. Они содержат старые и новые значения записи.

Таким образом, внутри триггера (вы можете легко найти элементы создания триггеров), вы сделали бы что-то вроде этого:

Insert table2 (user_id, user_name)
select user_id, user_name from inserted i
left join table2 t on i.user_id = t.userid
where t.user_id is null

При написании триггеров помните, что они действуют один раз во всей партии информации, они не обрабатывают строки за строкой. Поэтому учтите несколько вставок строк в вашем коде.

Ответ 5

Когда вы находитесь в контексте триггера, у вас есть доступ к логической таблице INSERTED, которая содержит все строки, которые только что были вставлены в таблицу. Вы можете создать свою вставку в другую таблицу на основе выбора из Inserted.

Ответ 6

Create 
trigger '[dbo].[mytrigger]' on '[dbo].[Patients]' after update , insert as
begin
     --Sql logic
     print 'Hello world'     
 end