2014-10-29 12 views
8

Mam ten kod w PostgreSQLCzy dziedziczenie tabeli wsparcia MySQL?

CREATE TABLE first (
    id serial, 
    primary key(id) 
); 

CREATE TABLE second (primary key(id)) INHERITS (first); 

Co to jest kod odpowiednik dla MySQL?

+0

MySQL nie ma dziedziczenia jak PostgreSQL. –

Odpowiedz

6

MySQL nie obsługuje dziedziczenia tabel. Jedynym sposobem na zbliżenie funkcjonalność jest za pomocą klucza obcego MySQL (co nie jest zbyt dobra albo):

CREATE TABLE first (
    id serial, 
    PRIMARY KEY (id) 
); 

CREATE TABLE second (
    parent integer REFERENCES first, 
    PRIMARY KEY (parent) 
); 

Oczywiście, trzeba by zmienić jakiekolwiek poglądy i zapytań z PostgreSQL „wersja dziedziczenie "do regularnych zapytań o wiele relacji.

+0

Czy istnieje konkretny powód (np. Związany z wydajnością), którego MySQL nie obsługuje? – sajadkk

+0

@sajadkk Nie jestem świadomy problemów z wydajnością z dziedziczeniem, ale jest to stosunkowo nowa koncepcja i nadal ma pewne niedociągnięcia w zakresie wdrażania. Dziedziczenie PostgreSQL nie jest na przykład zgodne z SQL i nie wszystkie ograniczenia są dziedziczone, więc należy zachować ostrożność podczas pracy z dziedziczeniem. (MySQL, nawiasem mówiąc, jest o wiele mniej zgodny ze standardem SQL niż PostgreSQL, chociaż ostatnio nie sprawdzałem poprawności.) Chyba, że ​​* naprawdę * potrzebujesz dziedziczenia z jakiegoś powodu, prawdopodobnie lepszym wyjściem jest standardowa struktura relacyjna. – Patrick

+2

"* ale jest to stosunkowo nowa koncepcja *" - to w rzeczywistości nie jest prawdą. Pojęcia relacyjne obiektów wracają do lat 80-tych –

Powiązane problemy