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.
RESTRICT
og 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
udenHVIS 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 forskelligeFJERN
– 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.