Я пытаюсь выполнить следующее с помощью триггера SQL Server: после вставки новой строки в таблицу мне бы хотелось обновить столбец в другой таблице.
Например: у меня есть таблица с именем Users
и таблица с именем Activity
.Каждый раз, когда клиент подключается к серверу, строка вставляется в таблицу Activity
;после вставки строки (которая содержит user_id
) я хотел бы обновить столбец в таблице Users
, в которой хранятся дата и время последнего действия.
UPDATE Users
SET Last_Activity_TimeStamp = GETDATE()
WHERE Users.User_ID = Activity.User_ID
Но SSMS выдаетсообщение об ошибке:
Не удалось связать многоэлементный идентификатор "dbo.Activity.User_ID"
Если я изменил приведенный выше оператор обновления на:
UPDATE Users
SET Last_Activity_TimeStamp = GETDATE()
WHERE Users.User_ID = User_ID
Все строки в таблице Users обновлены.
Я понимаю, что существует таблица Inserted
и что строки добавляются там до того, как они вставляются в основную таблицу Activity
,однако, потенциально у меня подключается много пользователей, и в таблицу Activity
будет вставлено много строк.Потенциально 1000 в секунду.Я хотел бы знать, как получить user_id
строки, вставляемой в таблицу Activity
, и обновить Last_Activity_TimeStamp
в таблице Users
.
Редактировать: Я думаю, где мне не хватаетя знаю, что я не знаю, сколько строк может быть в таблице Inserted
в любое время, учитывая, что в моем проекте одна транзакция вставляет только одну строку.Возможно ли, что в таблице Inserted
содержится более одной строки из других активных транзакций, поскольку к ней подключаются и отключаются несколько пользователей?
Любая помощь будет принята с благодарностью!
Спасибовы