DROP TABLE (Norsk)

Syntaks

DROP TABLE tbl_name ... 

Beskrivelse

DROP TABLE fjerner én eller flere tabeller. Du må ha DROP privilegefor hvert bord. Alle bord-data og bordet definisjon er fjernet, så vel som utløser knyttet til bordet, så becareful med denne uttalelsen! Hvis noen av tabellene som er navngitt i argumentet listen ikke eksisterer, MariaDB returnerer en feilmelding som indikerer etter navn som ikke-eksisterende tablesit var ikke i stand til å slippe, men det faller også alt av tabellene i listen som doexist.,

Viktig: Når en tabell er utelatt, bruker privilegier på bordet er notautomatically droppet. Se GRANT.

Hvis en annen tråd er ved å bruke tabellen i en eksplisitt transaksjon eller en autocommit transaksjonen, så tråden får en metadata-lås (MDL) på bordet. DROP TABLE uttalelse vil vente i det «Venter på bordet metadata lock» tråden staten til MDL er utgitt. MDLs er utgitt i følgende tilfeller:

  • Hvis en MDL er kjøpt i en konkret transaksjon, for deretter MDL vil bli utgitt når transaksjonen er avsluttet.,
  • Hvis en MDL er kjøpt i en autocommit transaksjonen, så MDL vil bli utgitt når uttalelsen avsluttes.
  • Overførbar og ikke-overførbar tabellene er håndtert den samme.

Merk at for en partisjonert tabell, DROP TABLE permanent fjerner tabledefinition, alle partisjoner, og alle data som var lagret inthose partisjoner. Det fjerner også partisjonering definisjon (.par) fileassociated med droppet bordet.

For hver referansetabellen, DROP TABLE dråper en midlertidig tabell med det navnet, hvis det finnes., Hvis det ikke finnes, og TEMPORARY søkeord er ikke brukt, det slipper en ikke-midlertidige tabellen med samme navn, hvis det finnes. TEMPORARY søkeord sikrer at en ikke-midlertidige tabellen vil ikke ved et uhell bli droppet.

Bruk IF EXISTS for å forhindre en feil oppstår i tabeller som gjør notexist. En NOTE genereres for hver ikke-eksisterende tabell ved bruk avIF EXISTS. Se VISE ADVARSLER.

Hvis en sekundærnøkkel referanser dette bordet, kan ikke bli droppet., I dette tilfellet, er det nødvendig å slippe utenlandske nøkkel første.

RESTRICT og CASCADE har lov til å gjøre portering fra andre database-systemer enklere. I MariaDB, de gjør ingenting.

kommentar før bordet navn (/*COMMENT TO SAVE*/) er lagret i det binære logg. Denne funksjonen kan brukes av replikering verktøy for å sende interne meldinger.

Det er mulig å angi tabellen navn som db_name.tab_name. Dette er nyttig for å slette tabeller fra flere databaser med en uttalelse., Se Id-Kvalifiseringer for detaljer.

DROP rettighet som kreves for å bruke DROP TABLE på ikke-midlertidige tabeller. For midlertidige tabeller, ingen rettighet som er nødvendig, fordi slike tabeller er kun synlig for den gjeldende økten.

Merk: DROP TABLE automatisk begår de aktive transaksjonen,med mindre du bruker TEMPORARY søkeord.

MariaDB starter med 10.5.4

Fra MariaDB 10.5.,4, DROP TABLE pålitelig sletter tabell rester inne i en storage engine, selv om .frm fil mangler. Før så, en manglende .frm fil vil resultere i uttalelsen sviktende.

MariaDB starter med 10.3.1

VENT/NOWAIT

Angi låser tidsavbrudd for venting. Se VENTE og NOWAIT.

DROP TABLE i replikering

DROP TABLE har følgende egenskaper i replikering:

  • DROP TABLE IF EXISTS er alltid innlogget.,
  • DROP TABLE uten HVIS det FINNES for tabeller som ikke eksisterer er ikke skrevet til den binære logg.
  • Gjensetting av MIDLERTIDIGE bordene står i loggen med MIDLERTIDIGE. Disse dråpene er bare logges når du kjører uttalelse eller blandet modus replikering.,
  • En DROP TABLE – setningen kan være logget med opptil 3 forskjellige UTELAT uttalelser:
    • UTELAT MIDLERTIDIGE TABELLEN list_of_non_transactional_temporary_tables
    • UTELAT MIDLERTIDIGE TABELLEN list_of_transactional_temporary_tables
    • DROP TABLE list_of_normal_tables

Starter fra MariaDB 10.0.,8, DROP TABLE på master er behandlet på den slave som DROP TABLE IF EXISTS. Du kan endre dette ved å sette slave-ddl-exec-modus til STRENGE.

Slippe en Intern #sql-… Tabell

Hvis mysqld prosessen er drept under et ALTER TABLE du kan finne en tabell som heter #sql-… i data-katalogen. I MariaDB 10.3, InnoDB tabeller med dette prefikset vil de slettes automatisk ved oppstart.I MariaDB 10.4 vi vil sikre at disse midlertidige tabeller vil alltid bli slettet automatisk.,

Hvis du ønsker å slette en av disse tabellene eksplisitt du kan gjøre dette ved å bruke følgende syntaks:

DROP TABLE `#mysql50##sql-...`;

Når du kjører en ALTER TABLE…ALGORITHM=INPLACE som bygger opp tabellen, InnoDB vil opprette et internt #sql-ib tabell. For disse tabellene, .frm filen vil bli kalt noe annet. For å slippe et slikt bord etter en server-krasj, må du endre #sql*.frm fil for å matche #sql-ib*.ibd – filen.,

Slippe Alle Tabeller i en Database

Den beste måten å slippe alle tabeller i en database, er ved å utføre DROP DATABASE, som vil slippe database seg selv, og alle tabeller i det.

hvis du Imidlertid ønsker å slippe alle tabeller i databasen, men du også ønsker å holde database seg selv og alle andre ikke-tabell gjenstander i det, så ville du trenger for å utføre. DROP TABLE for å slippe hver enkelt tabell. Du kan konstruere disse DROP TABLE kommandoer ved å spørre TABLES tabell i information_schema database., For eksempel:

SELECT CONCAT('DROP TABLE IF EXISTS `', TABLE_SCHEMA, '`.`', TABLE_NAME, '`;')FROM information_schema.TABLESWHERE TABLE_SCHEMA = 'mydb';

Eksempler på

DROP TABLE Employees, Customers;

Notater

vær oppmerksom på at DROP TABLE kan slippe både bord og sekvenser. Dette er hovedsakelig gjort for å tillate gamle verktøy som mysqldump å jobbe med sekvenser.

Se Også:

  • CREATE TABLE
  • ALTER TABLE
  • VIS CREATE TABLE
  • UTELAT REKKEFØLGE
  • Variabel-slave-ddl-exec-modus.

Leave a Comment