DROP TABLE (Dansk)

Syntaks

DROP TABLE tbl_name ... 

Beskrivelse

DROP TABLE fjerner en eller flere tabeller. Du skal haveDROP privilegefor hver tabel. Alle tabeldata og tabeldefinitionen fjernes såvel som triggere, der er knyttet til tabellen, så vær forsigtig med denne erklæring! Hvis nogen af tabellerne i argumentlisten ikke findes, returnerer MariaDB en fejl, der angiver ved navn, hvilke ikke-eksisterende tabellerdet kunne ikke falde, men det falder også alle tabellerne på listen, der Doe .ist.,

vigtigt: når en tabel tabes, slettes brugerrettigheder på bordet ikkeautomatisk. Se GRANT.

hvis en anden tråd bruger tabellen i en eksplicit transaktion eller en autocommit-transaktion, erhverver tråden en metadatalås (MDL) på bordet. Erklæringen DROP TABLE vil vente i trådtilstanden “venter på tabel metadata lås”, indtil MDL frigives. MDL ‘er frigives i følgende tilfælde:

  • hvis en MDL erhverves i en eksplicit transaktion, frigives MDL’ en, når transaktionen slutter.,
  • hvis en MDL erhverves i en autocommit-transaktion, frigives MDL, når erklæringen slutter.
  • Transaktionstabeller og ikke-transaktionstabeller håndteres det samme.

Bemærk, at der for en partitioneret tabel, DROP TABLE permanent fjerner tabledefinition, alle sine partitioner, og alle de data, som blev gemt inthose partitioner. Det fjerner også partitioneringsdefinitionen (.par) fileassociated med det faldne bord.

for hver refereret tabel, DROP TABLE dråber en midlertidig tabel med det navn, hvis den findes., Hvis det ikke findes, og TEMPORARY nøgleord ikke bruges, falder det en ikke-midlertidig tabel med samme navn, hvis den findes. Nøgleordet TEMPORARY sikrer, at en ikke-midlertidig tabel ikke ved et uheld bliver droppet.

brug IF EXISTS for at forhindre, at der opstår en fejl for tabeller, der ikke eksisterer. A NOTE genereres for hver ikke-eksisterende tabel, når du brugerIF EXISTS. Se Vis advarsler.

Hvis en fremmed nøgle refererer til denne tabel, kan tabellen ikke tabes., I dette tilfælde er det nødvendigt at droppe den fremmede nøgle først.

RESTRICTog CASCADE har tilladelse til at gøre porting fra andre databasesystemer lettere. I MariaDB gør de intet.

kommentaren før bordnavnene (/*COMMENT TO SAVE*/) gemmes i den binære log. Denne funktion kan bruges af replikeringsværktøjer til at sende deres interne meddelelser.

det er muligt at angive tabelnavne som db_name.tab_name. Dette er nyttigt at slette tabeller fra flere databaser med en erklæring., Se identifikatorer For detaljer.

drop-privilegiet er påkrævet for at bruge DROP TABLE på ikke-midlertidige tabeller. For midlertidige tabeller kræves der ikke noget privilegium, fordi sådanne tabeller kun er synlige for den aktuelle session.

Bemærk:DROP TABLE forpligter automatisk den aktuelle aktive transaktion,medmindre du brugerTEMPORARY nøgleord.

MariaDB startende med 10.5.4

fra MariaDB 10.5.,4,DROP TABLE sletter pålideligt bordrester inde i en opbevaringsmotor, Selvom filen.frm mangler. Før da ville en manglende .frm fil resultere i, at udsagnet fejler.

MariaDB starter med 10.3.1

vent/no .ait

Indstil låsen vent timeout. Se Vent og NO .ait.

DROP TABLE i replikation

DROP TABLE har følgende karakteristika i replikation:

  • DROP TABEL, HVIS der FINDES er altid logget ind.,
  • DROP TABLE uden HVIS der FINDES til tabeller, der ikke findes, er ikke skrevet til de binære log.
  • Dropping af midlertidige tabeller er præfikset i loggen medmidlertidig . Disse dråber logges kun, når du kører statement eller mi .ed mode replication.,
  • En DROP TABLE – sætning kan være logget med op til 3 forskellige FJERN – sætninger:
    • DROP MIDLERTIDIG TABEL list_of_non_transactional_temporary_tables
    • DROP MIDLERTIDIG TABEL list_of_transactional_temporary_tables
    • DROP TABLE list_of_normal_tables

Startende fra MariaDB 10.0.,8, DROP TABLE på master behandles på den slave, som DROP TABEL, HVIS der FINDES. Du kan ændre det ved at indstille slave-DDL-e .ec-mode til streng.

droppe en intern #s .l-… Tabel

Hvis Mys .ld-processen dræbes under en ALTER-tabel, kan du finde en tabel med navnet #s .l -… i din datakatalog. I MariaDB 10.3 slettes InnoDB-tabeller med dette præfiks automatisk under startup.In MariaDB 10.4 vi sørger for, at disse midlertidige tabeller altid slettes automatisk.,

Hvis du ønsker at slette en af disse tabeller udtrykkeligt, kan du gøre det ved at bruge den følgende syntaks:

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

Når du kører en ALTER TABLE…ALGORITHM=INPLACE, der genopbygger bordet, Harmløs vil oprette en intern #sql-ib tabel. For disse tabeller kaldes .frm – filen noget andet. For at droppe en sådan tabel efter et servernedbrud, skal du omdøbe #sql*.frm fil for at matche #sql-ib*.ibd fil.,

Droppe Alle Tabeller i en Database

Den bedste måde at slippe alle tabeller i en database, der er ved at udføre DROP DATABASE, som vil falde selve databasen, og alle borde i det.

men hvis du vil droppe alle tabeller i databasen, men du også vil beholde selve databasen og andre objekter, der ikke er tabel, i den, skal du udføre DROP TABLE for at droppe hver enkelt tabel. Du kan konstruere disse DROP TABLE kommandoer ved at forespørge TABLES tabelposition > > i information_schema database., For eksempel:

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

Eksempler

DROP TABLE Employees, Customers;

Noter

Pas på, at DROP TABLE kan falde både borde og sekvenser. Dette gøres hovedsageligt for at give gamle værktøjer som Mys .ldump mulighed for at arbejde med sekvenser.

Se Også

  • CREATE TABLE
  • ALTER TABLE
  • VIS CREATE TABLE
  • SLIP-SEKVENSEN
  • Variabel slave-ddl-exec-tilstand.

Leave a Comment