Aydenme con ésta desición:

21/10/2004 - 19:02 por [}-|]Escudero | Informe spam
Desde el punto de vista del desarrollo de software y dado que no soy experto en SQL Server; apenas
si tengo el conocimiento sobre el SQL como lenguage, necesario para obtener los resultados deseados
desde mi aplicación. Me surgió entonces el siguiente dilema, que creo yo, requiere del concepto de
algún experto, por eso acudo a Uds:

La idea básica es utilizar un sp_ para averiguar si una fila de cualquier tabla está referenciada en
otras tablas con el propósito de marcar las filas como bloqueadas en la interfaz de ususario de mi
aplicación. Para ello tengo dos alternativas diseñadas:
*******************************************************
1. Un sp_HasRef, que, de acuerdo con el nombre de la tabla y el ID de la fila consulta la existencia
de referencias en otras tablas asi:

IF (@RowTName = 'MyTabla')
BEGIN
IF EXISTS (SELECT * FROM MyTableRefA WHERE RefID = @RowID)
RETURN 1
ELSE IF EXISTS (SELECT * FROM MyTableRefB WHERE RefID = @RowID)
RETURN 1
ELSE
RETURN 0
END
ELSE IF (@RowTName = 'MyOtherTabla')
...

script se hace un poco extenso y tedioso, adicionalmente, no sé que efectos de rendimiento pueda
tener y es justo qui donde necesito que me ayuden (=P).

*******************************************************
2. Un sp_HasAnyRef Que hace uso de sysobjects, sysreferences, syscolumns y un cursor para determinar
las posibles referencias de un Una fila culquier tabla, no lo pego por que está un poco enrredado y
largo pero supongo que intuyen como lo hago.

que éste sp no se ejecute cuando se invoque desde una cuenta de usuario con derechos restringidos?;
dado que uiliza tablas del systema.


De antemano gracias.
Cordial saludo,
-> Said H. López
 

Leer las respuestas

#1 Maxi
21/10/2004 - 19:51 | Informe spam
Hola, la verdad que es extraño lo que quieres hacer, por lo menos para mi
;-)

Si entre tus tablas has puesto una relacion Foreign Key no deberias
preocuparte por bloquear mucho, ya que no podran borrar a menos que le hayas
indicado la eliminacion en Cascada.

De todas formas el primer codigo por mas que resulte extenso me parece una
buena forma de hacerlo.

Tambien podrias hacer un count porque si decis que un registro puede estar
en mas de una tabla esto quiere decir que puedo unir estas tablas por ese
campo en cuestion. y hacer un count

SELECT COUNT(*) FROM TABLA1 INNER JOIN TABLA2 ON TABLA1.ID = TABLA2.ID
WHERE TABLA1.ID = 'DATO'


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



"[}-|]Escudero" escribió en el mensaje
news:O0$
Desde el punto de vista del desarrollo de software y dado que no soy


experto en SQL Server; apenas
si tengo el conocimiento sobre el SQL como lenguage, necesario para


obtener los resultados deseados
desde mi aplicación. Me surgió entonces el siguiente dilema, que creo yo,


requiere del concepto de
algún experto, por eso acudo a Uds:

La idea básica es utilizar un sp_ para averiguar si una fila de cualquier


tabla está referenciada en
otras tablas con el propósito de marcar las filas como bloqueadas en la


interfaz de ususario de mi
aplicación. Para ello tengo dos alternativas diseñadas:
*******************************************************
1. Un sp_HasRef, que, de acuerdo con el nombre de la tabla y el ID de la


fila consulta la existencia
de referencias en otras tablas asi:

IF (@RowTName = 'MyTabla')
BEGIN
IF EXISTS (SELECT * FROM MyTableRefA WHERE RefID = @RowID)
RETURN 1
ELSE IF EXISTS (SELECT * FROM MyTableRefB WHERE RefID = @RowID)
RETURN 1
ELSE
RETURN 0
END


referenciadas.
ELSE IF (@RowTName = 'MyOtherTabla')
...



referencian a X tabla, pero el
script se hace un poco extenso y tedioso, adicionalmente, no sé que


efectos de rendimiento pueda
tener y es justo qui donde necesito que me ayuden (=P).

*******************************************************
2. Un sp_HasAnyRef Que hace uso de sysobjects, sysreferences, syscolumns y


un cursor para determinar
las posibles referencias de un Una fila culquier tabla, no lo pego por que


está un poco enrredado y
largo pero supongo que intuyen como lo hago.



¿existe la posibilidad de
que éste sp no se ejecute cuando se invoque desde una cuenta de usuario


con derechos restringidos?;
dado que uiliza tablas del systema.


De antemano gracias.
Cordial saludo,
-> Said H. López







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.778 / Virus Database: 525 - Release Date: 15/10/2004

Preguntas similares