Una sobre triggers

30/03/2006 - 22:41 por Jano | Informe spam
Saludos compañeros

Pues sigo con mi investigacion acerca de restricciones, ahora me toca los
Triggers pero tengo un problemilla:

Tabla : Conceptos
Col1 : Codigo (PK,Dec(5,0) Identity)
Col2 : Descripcion (Varchar(30))
Col3 : Tipo (char(1))

Quiero crear un Trigger para prevenir que el campo Descripcion entre vacio,
el codigo para el trigger es el siguiente:

CREATE TRIGGER Concepto_Trigger
ON Concepto
FOR INSERT,UPDATE
AS
BEGIN
IF Descripcion Is Null
PRINT 'Error'
END

Al correr el query, me da el siguiente error:

Msg 207, Level 16, State 1, Procedure tConcepto_Oficial_Descripcion, Line 10
El nombre de columna 'Descripcion' no es válido.

Y no tengo idea de como corregir este problema. Mucho agradecer su
colaboracion

Preguntas similare

Leer las respuestas

#1 JOSE DAVID GALVIZ M
31/03/2006 - 00:07 | Informe spam
Debes referirte al campo descripcion como

JOSE DAVID GALVIZ MUÑOZ
MCAD - DCE 5 Estrella

inserted.descripcion




"Jano" escribió en el mensaje
news:
Saludos compañeros

Pues sigo con mi investigacion acerca de restricciones, ahora me toca los
Triggers pero tengo un problemilla:

Tabla : Conceptos
Col1 : Codigo (PK,Dec(5,0) Identity)
Col2 : Descripcion (Varchar(30))
Col3 : Tipo (char(1))

Quiero crear un Trigger para prevenir que el campo Descripcion entre vacio,
el codigo para el trigger es el siguiente:

CREATE TRIGGER Concepto_Trigger
ON Concepto
FOR INSERT,UPDATE
AS
BEGIN
IF Descripcion Is Null
PRINT 'Error'
END

Al correr el query, me da el siguiente error:

Msg 207, Level 16, State 1, Procedure tConcepto_Oficial_Descripcion, Line 10
El nombre de columna 'Descripcion' no es válido.

Y no tengo idea de como corregir este problema. Mucho agradecer su
colaboracion
Respuesta Responder a este mensaje
#2 Isaias
31/03/2006 - 00:16 | Informe spam
Porque la columna DESCRIPCION pertenece (en el trigger), a la tabla temporal
DELETED o INSERTED.

Entonces, deberias validar asi:

IF (SELECT DESCRIPCION FROM INSERTED) IS NULL
BEGIN
.
END

Ahora bien, yo no lo haria en un TRIGGER, esto me suena mas bien a un CHECK.
¿No?

Saludos
Saludos
IIslas


"Jano" escribió:

Saludos compañeros

Pues sigo con mi investigacion acerca de restricciones, ahora me toca los
Triggers pero tengo un problemilla:

Tabla : Conceptos
Col1 : Codigo (PK,Dec(5,0) Identity)
Col2 : Descripcion (Varchar(30))
Col3 : Tipo (char(1))

Quiero crear un Trigger para prevenir que el campo Descripcion entre vacio,
el codigo para el trigger es el siguiente:

CREATE TRIGGER Concepto_Trigger
ON Concepto
FOR INSERT,UPDATE
AS
BEGIN
IF Descripcion Is Null
PRINT 'Error'
END

Al correr el query, me da el siguiente error:

Msg 207, Level 16, State 1, Procedure tConcepto_Oficial_Descripcion, Line 10
El nombre de columna 'Descripcion' no es válido.

Y no tengo idea de como corregir este problema. Mucho agradecer su
colaboracion



Respuesta Responder a este mensaje
#3 Jano
31/03/2006 - 00:45 | Informe spam
Cierto, pero la intencion del Trigger es poder devolver a la aplicacion
cliente un texto del error mas entendible por el usuario final. Ver mi post
acerca de Check Restricctions de hoy, pero mas temprano



"Isaias" wrote in message
news:
Porque la columna DESCRIPCION pertenece (en el trigger), a la tabla
temporal
DELETED o INSERTED.

Entonces, deberias validar asi:

IF (SELECT DESCRIPCION FROM INSERTED) IS NULL
BEGIN
.
END

Ahora bien, yo no lo haria en un TRIGGER, esto me suena mas bien a un
CHECK.
¿No?

Saludos
Saludos
IIslas


"Jano" escribió:

Saludos compañeros

Pues sigo con mi investigacion acerca de restricciones, ahora me toca los
Triggers pero tengo un problemilla:

Tabla : Conceptos
Col1 : Codigo (PK,Dec(5,0) Identity)
Col2 : Descripcion (Varchar(30))
Col3 : Tipo (char(1))

Quiero crear un Trigger para prevenir que el campo Descripcion entre
vacio,
el codigo para el trigger es el siguiente:

CREATE TRIGGER Concepto_Trigger
ON Concepto
FOR INSERT,UPDATE
AS
BEGIN
IF Descripcion Is Null
PRINT 'Error'
END

Al correr el query, me da el siguiente error:

Msg 207, Level 16, State 1, Procedure tConcepto_Oficial_Descripcion, Line
10
El nombre de columna 'Descripcion' no es válido.

Y no tengo idea de como corregir este problema. Mucho agradecer su
colaboracion



Respuesta Responder a este mensaje
#4 Isaias
31/03/2006 - 03:20 | Informe spam
Jano

Para eso, puedes insertar un NUEVO mensaje de error en la tabla de ERRORES y
desplegarle al usuario, algo como:

"En la tabla CLIENTE, el valor para la columna NOMBRE debe ser un dato valido"

Aunque estoy 100% de acuerdo con Maxi, eso deberias PROGRAMARLO en tu STORE
de INSERCCION.

CREATE PROCEDURE pr_InsertaCliente
@Nombre VARCHA(60)
AS
BEGIN
SET NOCOUNT ON
IF LEN(@Nombre) = 0 OR @Nombre IS NULL
BEGIN
SELECT -1, 'En la tabla CLIENTE, el valor para la columna NOMBRE debe
ser un dato valido'
RETURN(0)
END

Aunque como dice Maxi acertadamente, para 2005, ya cuentas con el manejo de
errores.
Saludos
IIslas


"Jano" escribió:

Cierto, pero la intencion del Trigger es poder devolver a la aplicacion
cliente un texto del error mas entendible por el usuario final. Ver mi post
acerca de Check Restricctions de hoy, pero mas temprano



"Isaias" wrote in message
news:
> Porque la columna DESCRIPCION pertenece (en el trigger), a la tabla
> temporal
> DELETED o INSERTED.
>
> Entonces, deberias validar asi:
>
> IF (SELECT DESCRIPCION FROM INSERTED) IS NULL
> BEGIN
> .
> END
>
> Ahora bien, yo no lo haria en un TRIGGER, esto me suena mas bien a un
> CHECK.
> ¿No?
>
> Saludos
> Saludos
> IIslas
>
>
> "Jano" escribió:
>
>> Saludos compañeros
>>
>> Pues sigo con mi investigacion acerca de restricciones, ahora me toca los
>> Triggers pero tengo un problemilla:
>>
>> Tabla : Conceptos
>> Col1 : Codigo (PK,Dec(5,0) Identity)
>> Col2 : Descripcion (Varchar(30))
>> Col3 : Tipo (char(1))
>>
>> Quiero crear un Trigger para prevenir que el campo Descripcion entre
>> vacio,
>> el codigo para el trigger es el siguiente:
>>
>> CREATE TRIGGER Concepto_Trigger
>> ON Concepto
>> FOR INSERT,UPDATE
>> AS
>> BEGIN
>> IF Descripcion Is Null
>> PRINT 'Error'
>> END
>>
>> Al correr el query, me da el siguiente error:
>>
>> Msg 207, Level 16, State 1, Procedure tConcepto_Oficial_Descripcion, Line
>> 10
>> El nombre de columna 'Descripcion' no es válido.
>>
>> Y no tengo idea de como corregir este problema. Mucho agradecer su
>> colaboracion
>>
>>
>>



Respuesta Responder a este mensaje
#5 Jano
31/03/2006 - 03:50 | Informe spam
Muchas gracias a todos por su colaboracion, pondre en practica todos sus
consejos. Es siempre un placer compartir experiencias con profesionales como
Ud.s

Nos vemos pronto!!!



"Isaias" wrote in message
news:
Jano

Para eso, puedes insertar un NUEVO mensaje de error en la tabla de ERRORES
y
desplegarle al usuario, algo como:

"En la tabla CLIENTE, el valor para la columna NOMBRE debe ser un dato
valido"

Aunque estoy 100% de acuerdo con Maxi, eso deberias PROGRAMARLO en tu
STORE
de INSERCCION.

CREATE PROCEDURE pr_InsertaCliente
@Nombre VARCHA(60)
AS
BEGIN
SET NOCOUNT ON
IF LEN(@Nombre) = 0 OR @Nombre IS NULL
BEGIN
SELECT -1, 'En la tabla CLIENTE, el valor para la columna NOMBRE debe
ser un dato valido'
RETURN(0)
END

Aunque como dice Maxi acertadamente, para 2005, ya cuentas con el manejo
de
errores.
Saludos
IIslas


"Jano" escribió:

Cierto, pero la intencion del Trigger es poder devolver a la aplicacion
cliente un texto del error mas entendible por el usuario final. Ver mi
post
acerca de Check Restricctions de hoy, pero mas temprano



"Isaias" wrote in message
news:
> Porque la columna DESCRIPCION pertenece (en el trigger), a la tabla
> temporal
> DELETED o INSERTED.
>
> Entonces, deberias validar asi:
>
> IF (SELECT DESCRIPCION FROM INSERTED) IS NULL
> BEGIN
> .
> END
>
> Ahora bien, yo no lo haria en un TRIGGER, esto me suena mas bien a un
> CHECK.
> ¿No?
>
> Saludos
> Saludos
> IIslas
>
>
> "Jano" escribió:
>
>> Saludos compañeros
>>
>> Pues sigo con mi investigacion acerca de restricciones, ahora me toca
>> los
>> Triggers pero tengo un problemilla:
>>
>> Tabla : Conceptos
>> Col1 : Codigo (PK,Dec(5,0) Identity)
>> Col2 : Descripcion (Varchar(30))
>> Col3 : Tipo (char(1))
>>
>> Quiero crear un Trigger para prevenir que el campo Descripcion entre
>> vacio,
>> el codigo para el trigger es el siguiente:
>>
>> CREATE TRIGGER Concepto_Trigger
>> ON Concepto
>> FOR INSERT,UPDATE
>> AS
>> BEGIN
>> IF Descripcion Is Null
>> PRINT 'Error'
>> END
>>
>> Al correr el query, me da el siguiente error:
>>
>> Msg 207, Level 16, State 1, Procedure tConcepto_Oficial_Descripcion,
>> Line
>> 10
>> El nombre de columna 'Descripcion' no es válido.
>>
>> Y no tengo idea de como corregir este problema. Mucho agradecer su
>> colaboracion
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida