sql >> Database >  >> RDS >> Sqlserver

Laat alle tabellen vallen waarvan de naam begint met een bepaalde tekenreeks

Mogelijk moet u de zoekopdracht wijzigen om de eigenaar op te nemen als er meer dan één in de database is.

DECLARE @cmd varchar(4000)
DECLARE cmds CURSOR FOR
SELECT 'drop table [' + Table_Name + ']'
FROM INFORMATION_SCHEMA.TABLES
WHERE Table_Name LIKE 'prefix%'

OPEN cmds
WHILE 1 = 1
BEGIN
    FETCH cmds INTO @cmd
    IF @@fetch_status != 0 BREAK
    EXEC(@cmd)
END
CLOSE cmds;
DEALLOCATE cmds

Dit is schoner dan het gebruik van een tweestapsbenadering van script genereren plus uitvoeren. Maar een voordeel van het genereren van scripts is dat het u de kans geeft om het geheel te bekijken van wat er gaat worden uitgevoerd voordat het daadwerkelijk wordt uitgevoerd.

Ik weet dat als ik dit zou doen tegen een productiedatabase, ik zo voorzichtig mogelijk zou zijn.

Bewerken Codevoorbeeld opgelost.



  1. Oracle:exporteer een tabel met blobs naar een .sql-bestand dat opnieuw kan worden geïmporteerd

  2. Waarom hebben we berichtenmakelaars zoals RabbitMQ nodig boven een database zoals PostgreSQL?

  3. NULLIF() Functie in Oracle

  4. Optionele afhankelijkheden creëren