【发布时间】:2010-11-19 13:13:20
【问题描述】:
我有一个名为 Events 的表,我想在其中插入信息。
这是事件表架构:
create table Evento
(
ID int primary key identity(1,1),
Fecha datetime not null,
Descripcion nvarchar(256) not null,
Aplicacion nvarchar(256) not null,
Equipo nvarchar(256) not null,
Usuario nvarchar(256) not null,
Tabla nvarchar(256) not null,
Tipo nvarchar(256) not null
)
现在,每当将新记录插入到 Compra(购买)表中时,我尝试创建的触发器脚本:
create trigger AuditoriaCompraInsert on Compra for INSERT
as
insert into Evento select GETDATE(), CONVERT(varchar(128),i.ID), APP_NAME,
HOST_NAME, SYSTEM_USER, 'Compra', 'Insert' from inserted i
我收到以下错误:
消息 207,级别 16,状态 1,程序 AuditoriaCompraInsert,第 3 行无效 列名“APP_NAME”。消息 207,级别 16,状态 1,程序 AuditoriaCompraInsert,第 4 行无效 列名“HOST_NAME”。
有什么指导吗?
【问题讨论】:
-
我建议您始终在 INSERT 中包含列列表,例如
INSERT INTO Evento (col1, col2,...) SELECT...。此外,具有“插入”、“更新”等值的 varchar() 列的效率低于使用具有“I”、“U”等值的 char(1) 列。
标签: sql-server tsql triggers