sql >> Database teknologi >  >> RDS >> Mysql

Skift tabel, hvis den findes, eller opret, hvis ikke

MySQL INFORMATION_SCHEMA database til undsætning:

-- First check if the table exists IF EXISTS(SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'db_name' AND table_name LIKE 'wild') -- If exists, retreive columns information from that table THEN SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tbl_name' AND table_schema = 'db_name'; -- do some action, i.e. ALTER TABLE if some columns are missing ALTER TABLE ... -- Table does not exist, create a new table ELSE CREATE TABLE .... END IF;

Flere oplysninger:

OPDATERING:

En anden mulighed, muligvis lettere, er at droppe den eksisterende tabel og genskabe den igen med det nye skema. For at gøre dette skal du bruge:

  1. Opret en midlertidig tabel, en nøjagtig kopi af den eksisterende tabel
  2. Fyld den midlertidige tabel med data fra den gamle tabel
  3. Slip den gamle tabel
  4. Opret den nye tabel med nyt skema
  5. Fyld den nye tabel med oplysningerne fra den midlertidige tabel
  6. Slet midlertidig tabel.

Så i SQL-kode:

CREATE TABLE old_table_copy LIKE old_table;

INSERT INTO old_table_copy
SELECT * FROM old_table;

DROP TABLE old_table;

CREATE TABLE new_table (...new values...);

INSERT INTO new_table ([... column names from old table ...])
SELECT [...column names from old table ...] 
FROM old_table_copy;

DROP TABLE old_table_copy;
 

Faktisk kunne du springe det sidste trin, "Drop midlertidig tabel." over et stykke tid. For en sikkerheds skyld vil du gerne have en slags backup af den gamle tabel, "just-in-case".

Flere oplysninger:



  1. Slut dig til mig med Special Guest Michal Bar fra MS Access Team!

  2. Omdøb Amazon RDS-tabelnavnet til stort bogstavsfejl

  3. Sådan slipper du af med MySQL-fejlen 'Forberedt erklæring skal forberedes igen'

  4. MySQL - eksploder/opdel input til lagret procedure