2010-11-19 4 views
0

정보를 삽입하려는 이벤트라는 테이블이 있습니다.간단한 SQL 트리거 만들기

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 
: 나는 새로운 레코드가 Compra (구매) 테이블에 삽입 될 때마다 만들려고 해요 트리거 스크립트 이제 여기

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 
) 

됩니다 : 여기

는 이벤트 테이블 스키마입니다

나는 이러한 오류를 얻을 :

메시지 207, 수준 16, 상태 1, 프로 시저 AuditoriaCompraInsert, 3 번 행이 잘못되었습니다. 열 이름이 'APP_NAME'입니다. 메시지 207, 수준 16, 상태 1, 절차 AuditoriaCompraInsert, 줄 4 올바르지 않음 열 이름이 'HOST_NAME'입니다.

어떤 지침이 있습니까?

+0

INSERT INTO Evento (col1, col2, ...) SELECT ...와 같이 항상 열 목록을 포함하는 것이 좋습니다. 또한 'Insert', 'Update'등의 값이있는 varchar() 열은 'I', 'U'등의 char (1)을 사용하는 것보다 효율적이지 않습니다. –

답변

3

HOST_NAME() 등은 기능입니다. 괄호를 추가하십시오.

+0

감사합니다! 그것이 문제였습니다. –