DROP TABLE COM CONDIO TEM COMO?

 Tópico anterior Próximo tópico Novo tópico

DROP TABLE COM CONDIO TEM COMO?

SQL / DATABASE

 Compartilhe  Compartilhe  Compartilhe
#491102 - 06/11/2019 11:05:17

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Ol pessoal
Tenho um banco no sql Server e gostaria de apagar todas as tabelas que comeam com []BGG[] dentro do SQL

Pois bem fiz um a query para selecionar as Tabelas que comeam com BBG:
Select a.Name as Tabela
From sys.tables a
Inner Join sys.indexes c ON a.OBJECT_ID = c.object_id
Inner Join sys.partitions b ON c.object_id = b.OBJECT_ID AND c.index_id = b.index_id
Where left(a.Name,3) = []BGG[]


Agora quero usar um Drop Table para apagar essas tabelas selecionadas
Ou j colocar a condio direto direto no Drop Table no sei se tem como.

Resumindo, qual a melhor maneira para apagar todas as Tabelas que comeam com BGG?

Grato



#491110 - 06/11/2019 18:24:17

VERAPALI
CURITIBA
Cadast. em:Dezembro/2003


Teoricamente um execute nao funcionaria a partir do recordset gerado ?
Nao sou expert em sql server mas no teu while do recordset dar um execute nao rola ?

Vera Lucia


Resposta escolhida #491113 - 06/11/2019 19:50:03

JABA
CABO FRIO
Cadast. em:Agosto/2005


(
select
  []ALTER TABLE [] + tc.table_name + [] DROP CONSTRAINT [] + tc.constraint_name + [];[]
from
  INFORMATION_SCHEMA.TABLES t
  ,INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
where
  t.table_name = tc.table_name
  and tc.constraint_name not like []%_pk[]
  and tc.constraint_name not like []pk_%[]
  and t.table_catalog=[]<schema>[]
) UNION (
select
  []DROP TABLE [] + t.table_name + [];[]
from
  INFORMATION_SCHEMA.TABLES t
where
  t.table_catalog=[]<schema>[]
)


Tem vrias solues aqui: stackoverflow.com/questions/4858488/sql-server-drop-table-cascade-equivalent

_______________________________________________________________________________________________

Se a alma ou esprito so imateriais, como eles fazem para se localizar quando o corpo est em movimento?



#491115 - 07/11/2019 00:40:13

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Jaba,
Nesse cdigo onde entra os trs primeiros caracteres das tabelas sendo BGG?
No sei se entendi direito

Grato



#491116 - 07/11/2019 02:22:08

JABA
CABO FRIO
Cadast. em:Agosto/2005


Tenta l no final pra ver se vai.

(
select
  []ALTER TABLE [] + tc.table_name + [] DROP CONSTRAINT [] + tc.constraint_name + [];[]
from
  INFORMATION_SCHEMA.TABLES t
  ,INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
where
  t.table_name = tc.table_name
  and tc.constraint_name not like []%_pk[]
  and tc.constraint_name not like []pk_%[]
  and t.table_catalog=[]<schema>[]
) UNION (
select
  []DROP TABLE [] + t.table_name + [];[]
from
  INFORMATION_SCHEMA.TABLES t
where
  left(t.table_name,3) = []BGG[] And t.table_catalog=[]<schema>[]
)


_______________________________________________________________________________________________

Se a alma ou esprito so imateriais, como eles fazem para se localizar quando o corpo est em movimento?



#491120 - 07/11/2019 10:21:54

FOXMAN
BARRETOS
Cadast. em:Janeiro/2001


Membro da equipe
Citação:
:
Rodei deu (No column name)

Apesar de ser outro banco(MySQL)
A tempos atras criei um Stored Procedure para renomear todas as tabelas.
Nela eu dava um loop buscando as tabelas de um determinado schema, e caso encontrasse Alterava o nome da tabela.
No meu caso de TABxxxxxx para TBLxxxxxxx
A mesma lgica pode ser aplicada para o Drop...


Grupo DotNet.Br no FaceBook

Grupo WhatsDev



#491121 - 07/11/2019 10:26:48

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 07/11/2019 11:54:53 por JCM0867

Ele listou as tabelas mas no executou o Drop Table
Bom s copiar o resultado e rodar

Essa query abaixo gera a mesma coisa apresentado no primeiro post:

Select []DROP TABLE [] + a.Name  + [];[] as Tabela
From sys.tables a
Inner Join sys.indexes c ON a.OBJECT_ID = c.object_id
Inner Join sys.partitions b ON c.object_id = b.OBJECT_ID AND c.index_id = b.index_id
Where left(a.Name,3) = []BGG[]

Mas a query apresentado por ti melhor por causa do tc.constraint_name

s achava que houvesse uma maneira mais simples do tipo:
Drop Table Tabelas Where left(Tabelas,3) = []BGG[]

Bom, mas foi resolvido,
Grato

FOXMAN,
que tinha colocado o nome do banco errado por isso no listou nada
Em VB eu tenho uma rotina de renomear tabelas fazendo um loop no banco de dados









 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por JCM0867 em 07/11/2019 20:05:17