Qual Melhor Forma Para Deletar USUARIO em 3 tabelas
14/04/2009
0
[b:5611943585][b]Preciso criar um mecanismo para DELETAR usuário assim que o mesmo for demetido da empresa. [/b:5611943585][/b]
Banco: sql server 2000
Tem 3 tabelas na order abaixo
- GrupoUsuarioXLogin
- Login
- Usuario
Tem o CAMPO ´cdusuario´ nas 3 tabelas.
[u:5611943585][b:5611943585]Pergunta[/b:5611943585][/u:5611943585]
[b:5611943585]Tem como criar um DELETE selecionando as 3 tabelas[/b:5611943585]
Tipo: delete from (select * from GrupoUsuarioXLogin where cdusuario = ´1´ (select * from Login where cdusuario = ´1´ (select * from Usuario where cdusuario = ´1´)))
Grato
Sérgio Max
Mibimax
Posts
15/04/2009
Ara.es
Assim quando vc excluir um registro na tabela de Usuario, automaticamente o SQL Server irá excluir os registros relacionados nas tabeas: GrupoUsuarioXLogin e Login.
Qualquer coisa é só postar!! Flw!!
15/04/2009
Mibimax
Você tem algum exemplo [color=red:c6da56515d][b:c6da56515d]DELETE CASCADE?[/b:c6da56515d][/color:c6da56515d]
delete usuario where cdusuario = ´...´ cdusuario -> só irei ter esse dado quando o usuário for excluído da rede go select * from GrupoUsuarioXLogin where cdusuario = ´...´ cdusuario -> só irei ter esse dado quando o usuário for excluído da rede go select * from login where cdusuario = ´...´ cdusuario -> só irei ter esse dado quando o usuário for excluído da rede
O administrador da rede TEM um script que irá MARCAR que usuario foi demitido, isto em uma nova tabela que irei criar
[b:c6da56515d]Tabela Temporaria: UsuarioDemitido
- cdusuario
- nome
- cpf
- Ativo: N ou S [/b:c6da56515d]
Vamos supor que o usuário FULANO foi demitido, é executado script do administrador da rede mancando o campo ATIVO para N
O campo ATIVO estando como N ai sim, TEM que deletar o usuario das 3 tabelas.
Não sei se foi claro, mais é mais ou meno isso que tenho que implementar.
Grato
23/04/2009
Mibimax
ara.es
Grato pelo retorno, mais não posso ALTERAR a estrutura das 3 tabelas
Li alguns exemplos de DELETE CASCADE na net, mais não posso alterar nada nas tabelas GrupoUsuarioXLogin, Login e Usuario
Preciso criar uma rotina para DELETAR um registro nas 3 tabelas, acredito que tem cursor que faça isso ou um comando que simples que atenda.
Alguém sabe ou tem exmplo, estou iniciando minha caminhada no SQL.
Grado
Sérgio
23/04/2009
Ara.es
DECLARE @CDUSUARIO INT SET @CDUSUARIO = 1 DELETE USUARIO WHERE CDUSUARIO = @CDUSUARIO DELETE GrupoUsuarioXLogin WHERE CDUSUARIO = @CDUSUARIO DELETE login WHERE CDUSUARIO = @CDUSUARIO
Lembrando que a variavel @CDUSUARIO vc tem que alterar tipo para o tipo da coluna no seu banco. coloquei INT somente como exemplo. E lembre-se que a ordem dos DELETES vai depender das relações de dependencias entre as tabelas. Qualquer coisa é só postar. Flw!!
24/04/2009
Mibimax
Criei NOVA Tabela
[b:b8401ba99f]Tabela: [/b:b8401ba99f]UsuarioTeste
[b:b8401ba99f]Campos: [/b:b8401ba99f]Usu_Codigo, Usu_Nome, Usu_Cpf e Usu_Situacao
[b:b8401ba99f]
Inserir dois registros na nova tabela[/b:b8401ba99f]
Usu_codigo Usu_nome Usu_cpf Usu_Situacao --------- ---------- ----------------- ---- -------- 1 Fulano 11.111.111/1111-11 A 2 Silva 22.222.222/222-22 I
[b:b8401ba99f][color=blue:b8401ba99f]O campo Usu_Situacao TEM duas situacões:[/color:b8401ba99f][/b:b8401ba99f]
1) A -> Ativo
2) I -> Inativo, ou seja, foi demitido
[b:b8401ba99f]
Real necessidade[/b:b8401ba99f]
Quando o campo Usu_Situacao estiver com o registro/situação igual a
I
- Usuario
- GrupoUsuarioXLogin
- login
É mais ou menos isso que tenho que implementar, e sei que tenho que estudar muito para aumentar o conhecimento sobre BD´s.
Grato
Sérgio
[/b]
20/05/2009
Mibimax
declare csDelUsu cursor for select cdUsuario from Usuario_TMP where StUsuario = ´I´
declare @XcdUsuario int
open csDelUsu
FETCH NEXT FROM csDelUsu INTO @XcdUsuario
while @@FETCH_status <> -1
begin
delete Usuario_TMP where cdUsuario = @XcdUsuario
delete login_TMP where cdUsuario = @XcdUsuario
delete GrupoUsuarioXLogin_TMP where cdUsuario = @XcdUsuario
FETCH NEXT FROM csDelUsu INTO @XcdUsuario
end
close csDelUsu
deallocate csDelUsu
Clique aqui para fazer login e interagir na Comunidade :)