Triggers Instead of

21/02/2005 - 09:44 por José Antonio | Informe spam
Dado mi poca experiencia en sql server, hay veces que despues de leer los
bool llego a scar conclusiones equivocadas, que gracias a dios en este foro
son felizmente corregidas.

Necesito controlar que a la hora de insertar las filas en una tabla, si la
columna cantidad es cero, esa fila no se inserte.

He pensado en los triggers instead of, pero no lo tengo claro.

Cuando se define para una tabla un trigger instead of para inserción sql
server no inserta nada y deja que el programador inserte en la tabla lo que
estime oportuno, dentro del trigger se podría hacer:

insert tabla select * from inserted where inserted.cantidad>0

si no se realiza ningun insert por el programador, no se inserta nada en
ninguna tabla.

¿Es correcta esta conclusión?

Si además del triger instead of, hubiese otro triger normal en el insert de
la tabla, ¿tambien se dispara despues del instead of?.

Gracias por su aportación.
 

Leer las respuestas

#1 qwalgrande
21/02/2005 - 12:18 | Informe spam
Hola.

Te desaconsejo la utilización de triggers para la problemática que
describes. Puedes hacerlo de una forma mucho más limpia con una restricción,
que en general, es lo recomendable cuando quieres realizar comprobaciones
cuyo ámbito de chequeo y consecuencias se restrinjan a la sea la propia
tabla.

Léete "CHECK Constraints" en los BOL.

qwalgrande


"José Antonio" wrote in message
news:utk3gG$
Dado mi poca experiencia en sql server, hay veces que despues de leer los
bool llego a scar conclusiones equivocadas, que gracias a dios en este foro
son felizmente corregidas.

Necesito controlar que a la hora de insertar las filas en una tabla, si la
columna cantidad es cero, esa fila no se inserte.

He pensado en los triggers instead of, pero no lo tengo claro.

Cuando se define para una tabla un trigger instead of para inserción sql
server no inserta nada y deja que el programador inserte en la tabla lo que
estime oportuno, dentro del trigger se podría hacer:

insert tabla select * from inserted where inserted.cantidad>0

si no se realiza ningun insert por el programador, no se inserta nada en
ninguna tabla.

¿Es correcta esta conclusión?

Si además del triger instead of, hubiese otro triger normal en el insert de
la tabla, ¿tambien se dispara despues del instead of?.

Gracias por su aportación.

Preguntas similares