Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarkZL

com FK

Recommended Posts

Ola amigos do IMastersSou novato e programo ASP, porem as vezes tenho que utilizar SQL, e por isso tenho um problema aparentemente simples:Tenho uma tabela unidade e outra usuario, preciso que o campo uni_id da tabela unidade esteja como FK na tabela usuario.Sei q se usa o alter table, mesmo olhando exemplos no google, n consegui montar uma sintaxe correta...tentei isso: ALTER TABLE usuario1 ADD CONSTRAINT usuario_fk1 FOREIGN KEY (uni_id) REFERENCES unidade1 Sem sucesso... abraços!Aguardo contato!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

MarkZL,

 

Particularmente prefiro tratar integridade referencial na aplicação e não no banco de dados, acredito que o ganho na performance geral vale o trabalho de implementar o controle no código.

 

Mas, cada caso é um caso !!!

 

Tenta esta sintaxe...

 

BEGIN TRANSACTIONSET QUOTED_IDENTIFIER ONGOSET TRANSACTION ISOLATION LEVEL SERIALIZABLEGOCOMMITBEGIN TRANSACTIONALTER TABLE dbo.Param ADD CONSTRAINT    FK_TesteFK FOREIGN KEY    (    SitCancelado    ) REFERENCES dbo.Situac    (    CodSituac    )IF @@ERROR=0  COMMIT ELSE  ROLLBACKGO

Assumi que as colunas tem o mesmo nome nas duas tabelas. Caso não tenham, ajuste o script !

 

Caso seja necessário deletar a FK, o código é...

 

BEGIN TRANSACTIONSET QUOTED_IDENTIFIER ONGOSET TRANSACTION ISOLATION LEVEL SERIALIZABLEGOCOMMITBEGIN TRANSACTIONALTER TABLE dbo.Param DROP CONSTRAINT    FK_TesteFK GOIF @@ERROR=0  COMMIT ELSE  ROLLBACKGO

Ok ?!?

Compartilhar este post


Link para o post
Compartilhar em outros sites

OPS... Peguei um código meu aqui e acabei esquecendo de ajustar...

 

Em relação a suas tabelas, ficamos assim :

 

-- Para criar a FK   BEGIN TRANSACTION   SET QUOTED_IDENTIFIER ON   GO   SET TRANSACTION ISOLATION LEVEL SERIALIZABLE   GO   COMMIT   BEGIN TRANSACTION   ALTER TABLE dbo.USUARIO ADD CONSTRAINT       USUARIO_FK1 FOREIGN KEY       (       uni_id       ) REFERENCES dbo.UNIDADE1       (       uni_id       )   IF @@ERROR=0     COMMIT    ELSE     ROLLBACK   GO-- Para deletar a FK   BEGIN TRANSACTION   SET QUOTED_IDENTIFIER ON   GO   SET TRANSACTION ISOLATION LEVEL SERIALIZABLE   GO   COMMIT   BEGIN TRANSACTION   ALTER TABLE dbo.USUARIO DROP CONSTRAINT       USUARIO_FK1    IF @@ERROR=0     COMMIT    ELSE        ROLLBACK   GO

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.