Jump to content
php.lv forumi

Postgresql Aidā


3ps

Recommended Posts

Man ir sakrājušies daudz jautājienu par PostgreSQL izmantošanu.

Pirmais jautājums.

Kādam jābūt unix lietotāja postgres (postgresql superlietotājs) shellam? /bin/bash nav par traku?

 

Un vēl otrs jautājiens uzreiz:

Kur postgresam stāv log fails??? Jā, atbilde ir manuālī.

 

Trešais jautājiens:

Kā var noskaidrot pēdējo insert_id no serial lauka ar Postgres palīdzību (nevis PHP) - man vajag vienas transakcijas ietvaros to zināt un uzreiz izmantot.

 

Atbilde uz trešo jautājumu:

Tā nu iznāca, ka pats nonācu pie atbildes ātrāk nekā kaut ko sagaidīju no jums.

Tātad vispirms uztaisam SEQUENCE priekš id ģenerēšanas:

 

CREATE SEQUENCE id_seq START 0 INCREMENT 1;

 

Insertu organizē funkcija:

CREATE FUNCTION add_record(VARCHAR) RETURN INTEGER AS '

DECLARE record_vards ALIAS FOR $1;

BEGIN

SELECT INTO record_id nextval ('id_seq');

INSERT INTO tabula (id, vards) VALUES (record_id, record_vards);

RETURN record_id;

END; '

LANGUAGE 'sql'

SECURITY DEFINER

 

Vēlāk izsauksim ar

SELECT pievienot_personu('Jurčiks');

 

Johaidī. Tikko sapratu. Man vajadzēja taisīt ./configure ... --enable-multibyte

 

Beeee. Ko man darīt tagad? Tas ir ceturtais jautājums.

 

Bļē. un ziniet ko es tagad sapratu? Tagad es sapratu, ka man vēl vaig PL/pgSQL uzstādīt. Un kad es to stādu, tad man izlec, bļe, createlang: external error. Ko lai daru, māt?

 

Ak, jā, jābūt taču lietotājam postgres, lai palaistu šo createlang. Bet vispār kad nomainījos uz postgres, tad šis man četras reizes paroli uzprasīja, bet languagi tā arī neiestādīja iekš template1. vai nav cūka? retorisks jautājums. un tomēr atbildēšu. jā, ir cūka.

 

Bet vispār. Kaut kas iet uz priekšu. Ko tad es izdarīju? Nomainīju lietotāja vārdu uz postgres. Iegāju psql un izpildīju šito te komandiņu (no grāmatas PRACTICAL POSTGRESQL [o'reilly]). Džeks atbildēja CREATE FUNCTION, sou FUNCTION ir izveidots. Tagad jāņem CREATE LANGUAGE priekšā:

 

CREATE LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler LANCOMPILER 'PL/pgsql';

 

Kad šito palaidu (iekš psql joprojām), tad saņēmu visnotaļ patīkamu responsi:

 

NOTICE: CreateProceduralLanguage: changing return type of function plpgsql_call_handler() from OPAQUE to LANGUAGE_HANDLER

CREATE LANGUAGE

Pēc tam izgāju laukā no psql un saņēmu un čekoju kā uzstādījies:

# /usr/local/pgsql/bin/createlang -l

Password:

Procedural languages

Name | Trusted?

---------+----------

plpgsql | f

(1 row)

 

Nafig tas f ? Tūlīt palasīsimies.

 

A tagad vajadzēs man par jaunu taisīt db iekš šitā paša klāstera, jo vecās jau nemainīsies, ja es tagad tikai šablonbāzi template1 izmainu. vo maitas

Link to comment
Share on other sites

×
×
  • Create New...