Buenas grupo:
Pretendo crear una vista indexada que pueda ser modificable y que parte de
varias tablas base. Para poder ser modificable, hay que implementar los
triggers instead of, ya que como he comentado, tira de varias tablas.
Bien, el trigger instead of delete, no lo necesito, puesto que los deletes
se harán siempre sobre la tabla base y las claves foráneas para las tablas
relacionadas se actualizan en cascada
El trigger instead of insert es muy sencillo y ya lo tengo, no tiene mucho
misterio...
Pero el que no se como afrontar es el trigger update. Lo que viene en la
ayuda no hace sino confundirme.
La tabla principal base es Proyectos, y la relacionada es
Proyectos_Autonomias. Esta última, además de la id del proyecto, tiene como
clave fóránea una ID de autonomía. Respecto a las columnas de la primera,
había pensado en evaluar un IF UPDATED(columna) de cada una de las de la
tabla, y de ser así, hacer el update con un join con la tabla inserted. De
todas maneras, eso sería cambiar un update por x... dependiendo de cuantas
columnas hayan cambiado, no se si esto es lo más apropiado.
La tabla relacionada... es otra historia. Si se ha actualizado esa columna
puede pasar:
1. Que ya hubiera un valor de autonomía en esta tabla para ese proyecto y se
cambie por otro valor válido
2. Que anteriormente no hubiera registro de autonomia para ese proyecto, y
en la vista se le de un valor. Se haría el insert sobre esa tabla
3. Que ya hubiera un valor de autonomía en esa tabla para ese proyecto y se
le de un valor de cadena vacía (es de tipo varchar), eso debería borrar
entonces el registro de la tabla relacionada
Esta parte ya me mosquea más, puesto que si son varios los registros que se
actualizan tendría que mirar tanto con la tabla deleted como con la inserted
registro por registro... y ya no tengo tan claro como hacerlo (salvo por
cursores, claro)
Espero sugerencias. Gracias de antemano
Trabajo con SQL Server 2005
http://www.moondance.tk
Leer las respuestas