sql >> Database teknologi >  >> RDS >> Sqlserver

Slet alle tabeller, hvis navne begynder med en bestemt streng

Du skal muligvis ændre forespørgslen for at inkludere ejeren, hvis der er mere end én i databasen.

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

Dette er renere end at bruge en to-trins tilgang til at generere script plus køre. Men en fordel ved scriptgenereringen er, at den giver dig mulighed for at gennemgå hele det, der skal køres, før det rent faktisk køres.

Jeg ved, at hvis jeg skulle gøre dette mod en produktionsdatabase, ville jeg være så forsigtig som muligt.

Rediger Kodeeksempel rettet.



  1. MySQLDumper:Et PHP- og Perl-baseret MySQL-databasesikkerhedskopieringsværktøj

  2. Brug af kolonnealias i WHERE-klausulen i MySQL-forespørgslen giver en fejl

  3. Tabel som argument for en PostgreSQL-funktion

  4. Hvornår skal jeg bruge CROSS APPLY over INNER JOIN?