Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zmień tabelę, jeśli istnieje lub utwórz, jeśli nie

MySQL INFORMATION_SCHEMA baza danych na ratunek:

-- 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;

Więcej informacji:

AKTUALIZACJA:

Inną opcją, być może łatwiejszą, jest usunięcie istniejącej tabeli i ponowne jej utworzenie z nowym schematem. Aby to zrobić, potrzebujesz:

  1. Utwórz tabelę tymczasową, dokładną kopię istniejącej tabeli
  2. Wypełnij tymczasową tabelę danymi ze starej tabeli
  3. Upuść stary stół
  4. Utwórz nową tabelę z nowym schematem
  5. Wypełnij nową tabelę informacjami z tabeli tymczasowej
  6. Upuść tabelę tymczasową.

Tak więc w kodzie SQL:

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;

Właściwie ostatni krok, „Upuść tabelę tymczasową.”, możesz na chwilę pominąć. Na wszelki wypadek chciałbyś mieć jakąś kopię zapasową starej tabeli „na wszelki wypadek”.

Więcej informacji:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pomoc MySQL:Jak znaleźć wszystkie zamówienia od klienta do ceny <=20 i statusu='nieopłacone'

  2. Darmowe metody naprawy uszkodzonej bazy danych MySQL

  3. Stół jest oznaczony jako uszkodzony i należy go naprawić

  4. Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo

  5. Jak zainstalować MySQL z phpMyAdmin na Ubuntu 14.04?