I MariaDB kan du använda OM INTE FINNS
satsen i CREATE TABLE
för att kontrollera om en tabell med samma namn redan finns i databasen innan den skapas.
Tabellen skapas bara om det inte redan finns en med samma namn.
Exempel
Här är ett exempel att visa:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
Här, t1
är tabellnamnet, och allt mellan parenteserna är tabelldefinitionen (d.v.s. kolumner, etc).
I så fall kommer tabellen bara att skapas om det inte redan finns en som heter t1
.
Kontrollera att tabellen nu finns
Vi kan fråga information_schema.tables
tabell för att kontrollera om tabellen nu finns:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.tables
WHERE
TABLE_SCHEMA LIKE 'zap' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 't1'
);
Resultat:
1
Här, zap
är namnet på databasen och t1
är namnet på tabellen som jag kontrollerar existensen av.
1
betyder att tabellen finns. Om det inte fanns skulle vi få 0
.
Försök att skapa tabellen igen
Om vi nu försöker skapa den tabellen igen:
CREATE TABLE IF NOT EXISTS t1 (
c1 INT,
c2 VARCHAR(10)
);
Vi får inget felmeddelande:
Query OK, 0 rows affected, 1 warning (0.002 sec)
Men vi får en varning.
Så låt oss kolla varningen:
SHOW WARNINGS;
Resultat:
+-------+------+---------------------------+ | Level | Code | Message | +-------+------+---------------------------+ | Note | 1050 | Table 't1' already exists | +-------+------+---------------------------+
Som väntat säger den oss att tabellen redan finns.
Utan OM INTE FINNS
Klausul
Det här är vad som händer när vi inte använder
CREATE TABLE t1 (
c1 INT,
c2 VARCHAR(10)
);
Den här gången får vi ett felmeddelande:
ERROR 1050 (42S01): Table 't1' already exists
Observera att OM INTE FINNS
klausul kontrollerar inte tabellstrukturen/definitionen. Den kontrollerar helt enkelt att det inte finns någon befintlig tabell med samma namn som vi försöker ge till tabellen som vi skapar.
Med andra ord, bara för att en tabell med det namnet redan finns, betyder det inte att den har rätt definition.