Labo

[EC-CUBE 2.11.5] PostgreSQLでシーケンス再設定

2012年05月27日 / 投稿者名:fukap


PostgreSQLデータベースの移行をやっていて、時々使いたくなるのがシーケンスの再設定です。
シーケンスでは、対応するテーブルのユニークIDを管理していますので、
シーケンスがおかしな値になっていると、IDの重複が起こったり、システムエラーの原因になります。
1つ1つテーブルと対応するシーケンス値を照らし合わせていけばいいのですが、面倒なので一気に再設定する際のSQLコードです。
久々に使う機会があったので、備忘的にメモしておきます。
2.11系は大丈夫だと思いますが、他のバージョンでは使用しないでください。

select setval('dtb_best_products_best_id_seq',(select max(best_id) from dtb_best_products));
select setval('dtb_bloc_bloc_id_seq',(select max(bloc_id) from dtb_bloc));
select setval('dtb_category_category_id_seq',(select max(category_id) from dtb_category));
select setval('dtb_class_class_id_seq',(select max(class_id) from dtb_class));
select setval('dtb_classcategory_classcategory_id_seq',(select max(classcategory_id) from dtb_classcategory));
select setval('dtb_csv_no_seq',(select max(no) from dtb_csv));
select setval('dtb_csv_sql_sql_id_seq',(select max(sql_id) from dtb_csv_sql));
select setval('dtb_customer_customer_id_seq',(select max(customer_id) from dtb_customer));
select setval('dtb_deliv_deliv_id_seq',(select max(deliv_id) from dtb_deliv));
select setval('dtb_holiday_holiday_id_seq',(select max(holiday_id) from dtb_holiday));
select setval('dtb_kiyaku_kiyaku_id_seq',(select max(kiyaku_id) from dtb_kiyaku));
select setval('dtb_mail_history_send_id_seq',(select max(send_id) from dtb_mail_history));
select setval('dtb_maker_maker_id_seq',(select max(maker_id) from dtb_maker));
select setval('dtb_member_member_id_seq',(select max(member_id) from dtb_member));
select setval('dtb_module_update_logs_log_id_seq',(select max(log_id) from dtb_module_update_logs));
select setval('dtb_news_news_id_seq',(select max(news_id) from dtb_news));
select setval('dtb_order_order_id_seq',(select max(order_id) from dtb_order));
select setval('dtb_order_detail_order_detail_id_seq',(select max(order_detail_id) from dtb_order_detail));
select setval('dtb_other_deliv_other_deliv_id_seq',(select max(other_deliv_id) from dtb_other_deliv));
select setval('dtb_pagelayout_page_id_seq',(select max(page_id) from dtb_pagelayout));
select setval('dtb_payment_payment_id_seq',(select max(payment_id) from dtb_payment));
select setval('dtb_products_class_product_class_id_seq',(select max(product_class_id) from dtb_products_class));
select setval('dtb_products_product_id_seq',(select max(product_id) from dtb_products));
select setval('dtb_class_combination_class_combination_id_seq',(select max(class_combination_id) from dtb_class_combination));
select setval('dtb_review_review_id_seq',(select max(review_id) from dtb_review));
select setval('dtb_send_history_send_id_seq',(select max(send_id) from dtb_send_history));
select setval('dtb_mailmaga_template_template_id_seq',(select max(template_id) from dtb_mailmaga_template));

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。