Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problema con trigger sencillo

Estas en el tema de Problema con trigger sencillo en el foro de Bases de Datos General en Foros del Web. Hola a todos. Quiero hacer un trigger para controlar los datos que se insertan el el campo de una tabla. He estado mirando como hacerlo, ...
  #1 (permalink)  
Antiguo 07/06/2004, 05:49
 
Fecha de Ingreso: diciembre-2002
Mensajes: 129
Antigüedad: 21 años, 5 meses
Puntos: 0
Problema con trigger sencillo

Hola a todos.
Quiero hacer un trigger para controlar los datos que se insertan el el campo de una tabla. He estado mirando como hacerlo, y mas o menos creo que seria asi:

CREATE TRIGGER Nombre
FOR INSERT, UPDATE ON nombre_tabla
BEGIN

//Esto es lo que no se muy bien como hacerlo

Raiserror('ese dato no se puede insertar')

Y eso, lo que no se muy bien como hacer es definir que salte cuando inserten un valor distinto de 5, por ejemplo en un campo que yo le diga, o un valor mayyor que un numero, o uno diferente a un numero y esas cosas. Alguien me podria poner un ejemplo simple de como hacerlo?
Muchas gracias a todos.
  #2 (permalink)  
Antiguo 07/06/2004, 06:03
 
Fecha de Ingreso: mayo-2004
Ubicación: Valladolid (Spain)
Mensajes: 81
Antigüedad: 20 años
Puntos: 0
Hola warlock. En primer lugar yo utilizo una sintaxis un poco diferente, aunque eso no significa que la tuya esté mal. La que yo uso es:
CREATE TRIGGER Nombre
ON nombre_tabla
FOR INSERT,UPDATE
AS
<Sentencias del trigger>

Pero creo que te equivocas, ya que un trigger salta siempre. En este caso salta siempre que se haga insert o update sobre la tabla. Lo que tienes que validar es si los datos que han introducido en un campo en concreto son los que tú quieres. Si es así perfecto y sino pues le muestras un mensaje de error, con Raiserror y haces un ROLLBACK TRAN.

Espero que te sirva.
Un saludo
  #3 (permalink)  
Antiguo 07/06/2004, 06:20
 
Fecha de Ingreso: diciembre-2002
Mensajes: 129
Antigüedad: 21 años, 5 meses
Puntos: 0
Entonces que seria, algo asi?

CREATE TRIGGER Nombre
FOR INSERT, UPDATE ON nombre_tabla
BEGIN
if campo= 5

Raiserror('ese dato no se puede insertar. No puede ser =5')
ROLLBACK TRANSACTION
End if
End
  #4 (permalink)  
Antiguo 07/06/2004, 07:51
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 1 mes
Puntos: 0
Mas o menos, pero la sentencia sería así


CREATE TRIGGER Nombre
FOR INSERT, UPDATE ON nombre_tabla
BEGIN
if (SELECT Count(1) FROM inserted WHERE campo = 5) <> 0
BEGIN
Raiserror('ese dato no se puede insertar. No puede ser =5')
ROLLBACK TRANSACTION
End
End

Bueno... más o menos, tendrás que ajustar los nombres de campo

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:26.