用触发器做系统日志的问题
在MSSQL一些表上做trigger,使得操作有关数据时(insert、delete、update等),把用户,类型,内容,时间insert到一个系统表sys_log.
问题如下:
CREATE TRIGGER [InsertTrig] ON [dbo].[info]
FOR INSERT
AS
--SELECT create_by ,create_on INTO (:cb,:co) FROM inserted // 能否做一个变量先存放一些数据?
INSERT INTO sys_log(operator_type,operator_content,username,operator_time)
VALUES( 'INSERT', SELECT s_id,create_by ,create_on FROM inserted )//此处好象不能混用这些语句?
问题点数:100、回复次数:5Top
1 楼yelook(香槟酒)回复于 2003-06-03 10:02:33 得分 25
INSERT INTO sys_log(operator_type,operator_content,username,operator_time)
SELECT 'INSERT',s_id,create_by ,create_on FROM insertedTop
2 楼Myyokel(剑心)回复于 2003-06-03 10:02:50 得分 25
INSERT INTO sys_log(operator_type,operator_content,username,operator_time)
VALUES( 'INSERT', SELECT s_id,create_by ,create_on FROM inserted )//此处好象不能混用这些语句?
---->>
INSERT INTO sys_log(operator_type,operator_content,username,operator_time)
SELECT 'INSERT' s_id,create_by ,create_on FROM insertedTop
3 楼Happiness(乐乐)回复于 2003-06-03 10:04:07 得分 25
CREATE TRIGGER [InsertTrig] ON [dbo].[info]
FOR INSERT
AS
INSERT INTO sys_log(operator_type,operator_content,username,operator_time)
select 'INSERT', s_id,suser_name() ,getdate() FROM inserted
go
Top
4 楼wgy2008(北极光)回复于 2003-06-03 10:05:23 得分 25
create trigger detect on table
For Delete,update
AS
insert TestLogs
select Id, --被删除记录的Id
opTime=GetDate(), --删除日期时间
HostName=Host_Name(), --主机名称
AppName=App_Name(), --客户机使用的应用程序
UserName=sUser_Name() --用户名
from DELETED
Top
5 楼iwithyou(革命征服者)回复于 2003-06-03 10:22:00 得分 0
INSERT INTO sys_log(operator_type,operator_content,username,operator_time)
select 'INSERT', s_id,create_by ,create_on FROM inserted
如果想在operator_content中加些内容,如"information"。
可否这样:select
......
content="information" + s_id
.......
from insertedTop




