Ir para conteúdo
Fórum Script Brasil

Ilma

Membros
  • Total de itens

    11
  • Registro em

  • Última visita

Tudo que Ilma postou

  1. Em um banco de dados tenho, dentre outras tabelas, uma tabela de médico (codmed, nome....) e de consultas (codmed, codpac, datahora...). A tabela de médicos deve ficar fisicamente na matriz (onde está o depto pessoal e se faz o cadastramento dos médicos) e um fragmento dela (visto que um médico só atende em determinadas filiais) nas filiais. Assim, nas filiais temos apenas uma visão da tabela de médicos. Já a tabela de consultas, deveria ser criada em cada filial. Porém, na tabela de consultas temos o campo codmed que é uma chave estrangeira referente à tabela de médicos (da matriz). Como posso fazer para manter a integridade referencial da tabela de consultas em relação ao campo codmed? Obs.: Ainda não estou usando replicação. Desde já, agradeço.
  2. Ilma

    Erro na condiçao

    Oi, não entendi muito bem: se a condição for 1 irá fazer todo o código? Se sim, faltou um begin...end do if. tt Att, Ilma.
  3. Oi, entendi que você quer retornar os registros da tab1 que não tenham os correspondentes no campo col1 e col2 (simultaneamente) na tabela2, é isso? Se for, tente o seguinte: select * from tabela1 where (cast(campo1 as varchar)+campo2) not in (select (cast(campo1 as varchar)+campo2) from tabela2) Usei o cast, porque testei em tabelas onde campo1 era int e campo2 era char.... qualquer coisa, use cast nos dois campos para serem tratados como char e você poder usar o operador + (concatenar)... Se tiver te ajudado, me retorne.... Att, Ilma.
  4. Oi pessoal, consegui resolver o problema. A variável @@error é setada para 0 a cada comando SQL de uma transação, por isto, ao avaliá-la após os insert´s, ela estava com o valor 0. Para solucionar fiz o seguinte: BEGIN TRANSACTION insert into cursos values(1,'Curso1',6,3) IF (@@ERROR <> 0) GOTO ERRO insert into cursos values(2,'Curso2',6,3) IF (@@ERROR <> 0) GOTO ERRO insert into cursos values(3,'Curso3',6,1) IF (@@ERROR <> 0) GOTO ERRO insert into cursos values(4,'Curso4',6,3) IF (@@ERROR <> 0) GOTO ERRO COMMIT RETURN ERRO: PRINT 'Erro em algum insert!' ROLLBACK RETURN
  5. Ilma

    Problema ao DELETAR

    Oi, você deve criar uma tabela auxiliar, como cópia de SuaTabela, sem repetições, desta forma: SELECT * INTO Auxiliar From SuaTabela group by id,descricao,Nr Depois, delete sua tabela: DROP TABLE SuaTabela. Crie sua tabela como cópia da auxiliar: SELECT * INTO SuaTabela From Auxiliar Delete a tabela auxiliar: DROP TABLE Auxiliar Espero ter ajudado. Dê retorno....
  6. Oi, você deve criar uma chave estrangeira composta por dois campos na tabela de endereços, pois a chave primária da tabela de fornecedores possui dois campos. Ficaria assim: CREATE TABLE enderecofornecedor ( codendfornecedor INT primary key, codfornecedor int , cnpj VARCHAR(20), telefone VARCHAR(10) NOT NULL, telefone2 VARCHAR(10), ramal VARCHAR(10), contato VARCHAR(30) NOT NULL, cidade CHAR(10) NOT NULL, estado CHAR(10) NOT NULL, endereco VARCHAR(30) NOT NULL, cep VARCHAR(13) NOT NULL, constraint codfornecedorFK fOREIGN KEY (codfornecedor, cnpj) REFERENCES tblfornecedor); GO
  7. Oi... Não entendi bem o que você precisa. você poderia dar um exemplo das saídas que você precisa? Atenciosamente, Ilma.
  8. Boa tarde!!! No caso do tipo DECIMAL(x,y), o parâmetro x deve conter a quantidade total de dígitos e o parâmetro y a quantidade de dígitos nas casas decimais. Assim, você deve alterar sua instrução alterando o parâmetro x. ALTER TABLE usu ALTER COLUMN nm_usu DECIMAL(10,3) NULL Assim você teria uma quantidade total de 10 dígitos (7 na parte inteira e 3 na parte decimal). Espero ter ajudado... Dê retorno!!!
  9. Oi, como disse para um dos participantes do fórum, ainda há pouco (em uma outra situação), sou novata no uso do SQl Server (estou ensinando meus alunos este SGBD pela primeira vez, usando o Express Edition). No entanto, usando Stored Procedure (utilizando cursor, pois a consulta poderia retornar vários registros e tem-se que analisar cada um deles) consegui resolver o problema. Não sei se há uma solução mais prática através de uma única query, mas vai aí minha contribuição.... Espero ter ajudado....Dê retorno por favor.... set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO CREATE procedure [dbo].[semNome] as declare @cont int, @tudo varchar(300),@codigo varchar(100) declare Registros Cursor for (select nome from produtos) OPEN Registros FETCH NEXT FROM Registros into @tudo While @@fetch_status=0 begin select @cont=1 select @codigo='' while (@cont <=len(@tudo)) and (substring(@tudo,@cont,1)not in ('1','2','3','4','5','6','7','8','9','0')) select @cont= @cont+1 if (@cont<>len(@tudo)) select @codigo= substring(@tudo,@cont,len(@tudo)-@cont+1) print @codigo FETCH NEXT FROM Registros into @tudo end CLOSE Registros DEALLOCATE Registros
  10. Post sua solução para aprendermos...
  11. Estou usando a versão Express Edition do SQL Server 2005 e ao criar uma transação, o rollback não funciona. Exemplo: BEGIN TRANSACTION insert into cursos values(20,'Curso20',6,3) insert into cursos values(21,'Curso21',6,3) insert into cursos values(22,'Curso22',6,1) insert into cursos values(23,'Curso23',6,3) if (@@error<>0) ROLLBACK else COMMIT Neste exemplo, o terceiro insert não está de acordo com a integridade referencial da tabela. Nenhum dos inserts deveria então ser feitos, porém os 3 outros são executados. Como solucionar esta questão? Desde já, agradeço as colaborações....
×
×
  • Criar Novo...