Witam,
w końcu mam okazję porzucić MySQL'a i przesiąść na 'lepszy' produkt - PostgreSQL.
Mimo, że we wszystkich bazach danych tabele tworzy się prawie identycznie, to jednak mam kilka pytań odnośnie szczegółów charakterystycznych dla Postgres'a..
Chciałbym zacząć od analogii.. W MySQL tworzenie tabeli wykonywałem według następującego schematu:
CREATE TABLE `person` (
`person_id` int(10) NOT NULL AUTO_INCREMENT,
`firstName` varchar(50) NOT NULL,
`secondName` varchar(50) NOT NULL,
`address` varchar(50) DEFAULT NULL,
`email` varchar(50) DEFAULT NULL,
PRIMARY KEY (`person_id`)
);
Jak to teraz powinno wyglądać w PostgreSQL ? Chodzi mi przede wszystkim o kwestie klucza głownego..
Przytaczając dokumentacje: http://www.postgresql.org/docs/9.1/static/datatype-numeric.html
8.1.4
In the current implementation, specifying:
CREATE TABLE tablename (
colname SERIAL
);
is equivalent to specifying:
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;
Spotkałem się również z zastosowaniem polecenia PRIMARY KEY lub kombinowaniem z **UNIQUE **i **CONSTRAINT **dla danej kolumny..
Teraz pytanie - co stosować ? Jaką wersje ? (i czy ma to jakieś znaczenie ?) Ogólnie sam chciałem napisać to możliwie "niezależnie" w stosunku do składni Postgres'a, aby było to możliwie jak najbardziej przenośnie (przełożone na inne bazy danych).. ale czy w sumie ma to sens ?..