Desencadenadores que omitan nulos

27/08/2004 - 15:42 por gl | Informe spam
Hola a todos:

Mi consulta es la siguiente: cómo puedo hacer para que un desencadenador que
impide inserciones si no existe ninguna clave coinciente en la tabla
principal, permita valores nulos
El trigger está armado de la siguiente forma:

CREATE TRIGGER T_tbAutorizaciones_ITrig ON dbo.tbAutorizaciones FOR INSERT
AS
SET NOCOUNT ON
IF (SELECT COUNT(*) FROM inserted) ! (SELECT COUNT(*) FROM tbAut_Estado, inserted WHERE (tbAut_Estado.CodEst inserted.Estado))
BEGIN
RAISERROR 44447 'No puede agregarse ni modificarse el registro. Las
reglas de integridad referencial requieren un registro relacionado en la
tabla ''tbAut_Estado''.'
ROLLBACK TRANSACTION
END

De modo que cuando el valor ingresado no se corresponde con uno de la tabla
principal impide la modificación o el agregado. Esto es correcto, pero lo
que yo necesito es que cuando no se ingrese valor alguno no haga nada, es
decir, admita valores nulos sin que pida un registro relacionado.

Desde ya muchas gracias,

Guido



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.744 / Virus Database: 496 - Release Date: 24/08/2004
 

Leer las respuestas

#1 Maxi
27/08/2004 - 15:46 | Informe spam
Hola, una sugerencia nomas:

Yo no usaria desencadenadores para este tipo de cosas, son lentos, poco
escalables y de muy dificil mantenimiento :(

A menos que la relacion de integridad este en distintas BDD pero sino usaria
Foreign Key que hace todo lo que necesitas de y de forma super simple.

Porque no usas Foreign key? que limitacion estas teniendo para ello?


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"gl" <gil_del900*AntiSpam*@argentina.com> escribió en el mensaje
news:
Hola a todos:

Mi consulta es la siguiente: cómo puedo hacer para que un desencadenador


que
impide inserciones si no existe ninguna clave coinciente en la tabla
principal, permita valores nulos
El trigger está armado de la siguiente forma:

CREATE TRIGGER T_tbAutorizaciones_ITrig ON dbo.tbAutorizaciones FOR INSERT
AS
SET NOCOUNT ON
IF (SELECT COUNT(*) FROM inserted) !> (SELECT COUNT(*) FROM tbAut_Estado, inserted WHERE (tbAut_Estado.CodEst
inserted.Estado))
BEGIN
RAISERROR 44447 'No puede agregarse ni modificarse el registro.


Las
reglas de integridad referencial requieren un registro relacionado en la
tabla ''tbAut_Estado''.'
ROLLBACK TRANSACTION
END

De modo que cuando el valor ingresado no se corresponde con uno de la


tabla
principal impide la modificación o el agregado. Esto es correcto, pero lo
que yo necesito es que cuando no se ingrese valor alguno no haga nada, es
decir, admita valores nulos sin que pida un registro relacionado.

Desde ya muchas gracias,

Guido



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.744 / Virus Database: 496 - Release Date: 24/08/2004







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.740 / Virus Database: 494 - Release Date: 16/08/2004

Preguntas similares