|
|
|
Supreme 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 ...
|
|
|
|
|
Supreme 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
|
|
|
|
|
Supreme 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 и откуда она доступна ?
|
|
|
|