C sharp - DataSet y Triggers en SQL Server

 
Vista:

DataSet y Triggers en SQL Server

Publicado por alberto (3 intervenciones) el 13/04/2005 12:06:45
Hola,

Tengo un problemilla con los DataSet. Yo, en un momento dado de mi código, consigo un DataSet con los cambios realizados en otro DataSet, mediante el método GetChanges. Luego, con este changedDataSet hago

myDataAdapter.Update(changedDataSet , "Vars");

Pues bien, la tabla Vars tiene un trigger que se lanza cuando alguna fila de la tabla Vars es borrada y coge filas de otras tablas y se las lleva a otras tablas diferentes. si activo este trigger, la instrucción de arriba me da una excepción.

¿Alguién sabe por qué?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:DataSet y Triggers en SQL Server

Publicado por alberto (3 intervenciones) el 14/04/2005 12:51:18
La excepción que resulta dice algo así como que no se puede insertar un valor null en el campo "ident".

A ver, el trigger lee de la tabla "Deleted"(que hace referencia a la fila borrada) y coge los valores de los campos de la fila, entre ellos "ident". Este valor no es null seguro, porque de hecho no puede ser null (NOT NULL en la declaración de la tabla). Luego, estos valores se insertan en otra tabla, que es la tabla a la que se hace referencia en la excepción. Ahí es cuando falla y dice que no se puede insertar un valor NULL en ese campo. El trigger funciona perfectamente si lo ejecutas directamente en la base de datos. Es decir, si haces "delete from Vars where id = ffff" automaticamente se ejecuta el trigger y se insertan filas en la otra tabla... ¿Puede ser que desde código no se vea la tabla Deleted del trigger o que esté vacía por algún extraño motivo del DataSet y por eso diga que es null?..

gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DataSet y Triggers en SQL Server

Publicado por Edgar (278 intervenciones) el 14/04/2005 14:02:11
Hola

El problema es un poco extraño.. no se puede deber a que desde codigo no se vea la tabla deleted.. ya que esto es algo que se ejecuta del lado del servidor.. no tiene nada que ver el cliente en esto.. o por lo menos, en principio, deberia ser asi

Que tipo de datos tiene el campo ident?? es un campo identidad o autoincremental?? si es asi, el dataset no deberia asignar ningun valor a este campo, y posiblemente esté enviando un null q te este afectando..

Para revisar que el trigger no es el que causa el problema, quitalo temporalmente de la base de datos o comenta el codigo del mismo, para que no se ejecute nada.. de esta manera podrás ver si el problema está en el trigger o si es posible que sea otra cosa

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DataSet y Triggers en SQL Server

Publicado por alberto (3 intervenciones) el 14/04/2005 14:19:05
El nombre del campo ident es confuso pero no, no es identity ni autoincremental, es un varchar(200) not null....

He probado quitando el trigger y no falla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:DataSet y Triggers en SQL Server

Publicado por Yamil Bracho (1164 intervenciones) el 14/04/2005 16:09:55
Revisa el proceso de llamar al trigger desde tu codigo. Puede ser que el campo no contenga valor.
Manda a imprimir a un archivo log o plano que tiene el dataSet correspondiente y asi puedes determinar que esta pasando...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar