Как в теле триггера записать зн-е тек. польз-ля в поле тек.таблицы ?
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Как в теле триггера записать зн-е тек.... Expand / Collapse
Автор
Сообщение
20.12.2001 8:29
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 06.02.2003 8:05
Сообщ.: 187, Visits: 2 058
На таблицу Authors создаю триггер. В этой таблице есть поля:
Creator varchar(30) Создатель строки таблице (user БД)
CreateDate datetime Когда создал (INSERT'ом)
Editor varchar(30) Кто отредактировал строку (user БД)
EditDate datetime Когда отредактировал (UPDATE'ом)
и другие поля.
Но эти первые 4 поля должны заполняться автоматически при INSERT, UPDATE. Их пользователь нидеть не будет.
Как это лучше сделать ? Может нужно написать 2 отдельных триггера и повешать на 1 таблицу Authors ?
И как это на T-SQL ?
Help, plz ...
Сообщ. #737198
20.12.2001 10:44
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 13.02.2002 12:46
Сообщ.: 266, Visits: 2 927
Для вставки автора записи триггер не нужен достаточно добавить DEFAULT в свойства полей при создании таблицы

CREATE TABLE Authors (
id int PRIMARY KEY IDENTITY,
Creator varchar(64) DEFAULT suser_sname(),
CreateDate datetime DEFAULT getdate(),
Editor varchar(64) NULL,
EditDate datetime NULL,
...
)

Для вставки редактора потребуется триггер типа

CREATE TRIGGER trigger_name
ON Authors
FOR UPDATE
AS
BEGIN
UPDATE Authors SET
Editor=suser_sname(), EditDate=getdate() WHERE
id in (SELECT id FROM INSERTED)
END
GO
Сообщ. #737224
21.12.2001 6:31
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 06.02.2003 8:05
Сообщ.: 187, Visits: 2 058
Спасибо. Еще пара вопросов ?
1)
SELECT USER, SUSER_SNAME(), CURRENT_USER, SYSTEM_USER, SESSION_USER
Выведет:
dbo sa dbo sa dbo
Что это значит ? Могут ли быть взаимозаменяемы USER и SESSION USER, SUSER_SNAME() и SYSTEM_USER. Все ли они нужны, зачем их столько ?

2) Что за таблица INSERTED и откуда она доступна ?
Сообщ. #737321
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 11:48