Trigger

27/10/2003 - 23:03 por Julio | Informe spam
Hola Grupo

Como puedo hacer un trigger para que se me dispare cuando se haga un insert
en un campo si existe otro que esta null,
es decir Si tengo los campos llamados fecha inicial y fecha final. Quiero
que el trigger se me dispare si el campo fecha inical lo dejan nulo y solo
quieran instroducir informacion en fecha final.
Lo que busco con esto es que no me dejen fecha inicial en blanco y que fecha
final dependa de fecha inical.

Preguntas similare

Leer las respuestas

#6 Javier Loria
28/10/2003 - 16:53 | Informe spam
Hola Juan Manuel:
Un par de comentarios,
Y que ocurre al Trigger cuando se insertan varias filas?,
El Raise Error envia un error, pero no evita la transaccion!!!
En detalle:
Trigger con varias Filas
=La Tabla Inserted es una Tabla no una fila, y es peligroso tratarla como
fila. Si quieres revisar que no haya nulos en INSERTED, debes hacer algo
como:

IF EXISTS( SELECT * FROM INSERTED WHERE Campo IS NULL)

Como manejar el Error
Te envio el codigo de un Trigger basado en un ejemplo de Miguel que me
parece es autoexplicativo.

Un ejemplo:
/* Inicio de Codigo */
DROP TABLE PRUEBATRIGGER
CREATE TABLE PruebaTrigger(
Id INT NOT NULL PRIMARY KEY
)
GO

CREATE TRIGGER InsPruebaTrigger
ON PruebaTrigger
FOR INSERT
AS
BEGIN
SET NOCOUNT ON
IF EXISTS (SELECT ID FROM INSERTED WHERE Id=1)
BEGIN
RAISERROR ('ID 1 NO es Permitido', 16, 10)
END
IF EXISTS (SELECT ID FROM INSERTED WHERE Id=2)
BEGIN
ROLLBACK
END
IF EXISTS (SELECT ID FROM INSERTED WHERE Id=3)
BEGIN
ROLLBACK
RAISERROR ('ID 3 NO es Permitido', 16, 10)
END
IF EXISTS (SELECT ID FROM INSERTED WHERE Id=4)
BEGIN
ROLLBACK
INSERT PruebaTrigger
VALUES (100)
END
END
GO

BEGIN TRAN
INSERT PruebaTrigger
VALUES (1)
INSERT PruebaTrigger
VALUES (11)
COMMIT
GO
SELECT * FROM PruebaTrigger
GO
BEGIN TRAN
INSERT PruebaTrigger
VALUES (2)
INSERT PruebaTrigger
VALUES (12)
COMMIT
GO
SELECT * FROM PruebaTrigger
GO
BEGIN TRAN
INSERT PruebaTrigger
VALUES (3)
INSERT PruebaTrigger
VALUES (13)
COMMIT
GO
SELECT * FROM PruebaTrigger
GO

BEGIN TRAN
INSERT PruebaTrigger
VALUES (4)
INSERT PruebaTrigger
VALUES (14)
COMMIT
SELECT * FROM PruebaTrigger

/* Fin de Codigo */




Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.




Juan Manuel escribio:
Mostrar la cita
Ads by Google
Search Busqueda sugerida