dbname=# SELECT * FROM pg_database;
*in MySQL
show databases;
dbname=# \d
*in MySQL
show tables;
dbname=# \c {db_name}
*in MySQL
use {db_name};
新たにレコード INSERT 時に、シーケンスキーの次の値を特定の項目にセットする場合は以下のように行う。
INSERT INTO TBL_NAME VALUES (nextval ('seq_name'), 1, 2);
また、その結果インクリメントされたシーケンスキーの値を参照するには
SELECT currval ('seq_name');
さらに、シーケンスキーの値を設定しなおしたい場合は、
SELECT setval ('seq_name', 10);SELECT setval ('seq_name', 10, false);
となり、前者は nextval の結果が 11 となり、後者は 10 となる。
# yum install postgresql-serverレポジトリへの追加方法は、 CentOS に PHP5 をインストールする を参考。
SELECT current_date() + '1 weeks' FROM table;みたいな感じです。
SELECT setval ('seq_num', 100);次のシーケンス番号をつけて挿入するには nextval 。
INSERT INTO table VALUES (nextval ('seq_num'), 'value');その結果のシーケンス番号を取得するには、セッションを切らない内に currval 。
SELECT currval ('seq_num');
DBMS には隔離レベルと言うのがあって、 PostgreSQL の場合少し特殊みたいです。
デフォルトでは Read Committed なんだけど、 Transaction 中の Update 後に、他の Transaction による SELECT は Commit を待たずに実行できるようだ。
$ pg_dump -u dbname $gt; dbname.out
$ createdb dbname $ psql -e -f dbname.out dbname
dbname=# SELECT * FROM pg_database;
dbname=# \d