Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Truncate Table


fernandomilicia

Pergunta

Pessoal, sabemos que o comando "truncate table" pode deixar uma referida tabela em seu estado de origem, porém, eu tenho duas tabelas e ao executar este comando ele me retorna isto: Cannot truncate table 'SPC_ENTRADA_DE_PRODUTOS' because it is being referenced by a FOREIGN KEY constraint.Eu sei que é por causa da forenKey, por isso, eu pergunto: Como eu faço para executar o script e "driblar" a forenKey?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Fernando,

Para "driblar" a forenKey, você poderá desativá-la. Mas quando for ativar, não conseguirá... ou você pode excluir a constraint. Mas por que queria "driblar"?

Se quiser "truncar" a tabela mãe, delete primeiro os registros na filha que faz referênia, depois "trunca" a mãe. :.)

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Fulvio, veja bem, eu mandei gerar o script automaticamente e salvei em um arquivo .sql; Depois abri o arquivo em bloco de notas e copiei o conteúdo, em seguida abri o Query Analyzer e colei o script e mandei rodar, quando fui verificar, a tabela estava como na origem! Agora está tudo certo. Valeu amigo!

Fui verificar o relacionamento entre as tabelas e percebi que ele foi pro espaço! Por sorte, tinha feito um backup antes. Estou mandando o script gerado automaticamente que eu rodei:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_SPC_ITENS_DE_ENTRADA_DE_PRODUT_SPC_ENTRADA_DE_PRODUTO]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)

ALTER TABLE [dbo].[sPC_ITENS_DE_ENTRADA_DE_PRODUT] DROP CONSTRAINT FK_SPC_ITENS_DE_ENTRADA_DE_PRODUT_SPC_ENTRADA_DE_PRODUTO

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sPC_ENTRADA_DE_PRODUTOS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[sPC_ENTRADA_DE_PRODUTOS]

GO

CREATE TABLE [dbo].[sPC_ENTRADA_DE_PRODUTOS] (

[sPC_ENT_ID] [int] IDENTITY (1, 1) NOT NULL ,

[sPC_ENT_DATA_DA_ENTRADA] [datetime] NOT NULL ,

[sPC_ENT_NUMERO_DA_NF] [varchar] (20) COLLATE Latin1_General_CI_AS NULL ,

[sPC_ENT_SERIE_NF] [varchar] (12) COLLATE Latin1_General_CI_AS NULL ,

[sPC_FOR_ID] [int] NULL

) ON [PRIMARY]

GO

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Fernando,

Bem, acho que não me expressei bem... rs.

No 1º script que rodou, você identifica na sysobjects as FK´s e deleta todas. Antes de deletar, você deveria ter gerado o script original da tabela (com todas as constraints). Aí sim deletaria as FK´s. você truncaria a tabela e rodaria apenas o script de geração das FK's (que gerou antes de deletar as FK´s), entendido?

Por isso que as FK´s foram pro espaço... rs.

Seria mais ou menos assim. Gerar script da tabela:

CREATE TABLE [dbo].[Tabela](

A [int] NOT NULL,

B [int] NOT NULL,

) ON [PRIMARY]

ALTER TABLE [dbo].[Tabela2] WITH NOCHECK ADD CONSTRAINT [FK_Tabela2] FOREIGN KEY( A )

REFERENCES [dbo].[Tabela] ( A )

GO

ALTER TABLE [dbo].[Tabela2] WITH NOCHECK ADD CONSTRAINT [FK_Tabela2] FOREIGN KEY( B )

REFERENCES [dbo].[Tabela] ( B )

Guardar apenas os scripts que gera as FK´s:

ALTER TABLE [dbo].[Tabela2] WITH NOCHECK ADD CONSTRAINT [FK_Tabela2] FOREIGN KEY( A )

REFERENCES [dbo].[Tabela] (A )

GO

ALTER TABLE [dbo].[Tabela2] WITH NOCHECK ADD CONSTRAINT [FK_Tabela2] FOREIGN KEY( B )

REFERENCES [dbo].[Tabela] ( B )

Deletar as FK´s e truncar as tabelas.

Criar as FK´s:

ALTER TABLE [dbo].[Tabela2] WITH NOCHECK ADD CONSTRAINT [FK_Tabela2] FOREIGN KEY( A )

REFERENCES [dbo].[Tabela] ( A )

GO

ALTER TABLE [dbo].[Tabela2] WITH NOCHECK ADD CONSTRAINT [FK_Tabela2] FOREIGN KEY( B )

REFERENCES [dbo].[Tabela] ( B )

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...