[pgsql-jp: 29523] Re: シーケンス型データの行の並べ換えについて。

tayama starlet @ pop12.odn.ne.jp
2003年 3月 31日 (月) 17:11:27 JST


はじめまして、田山といいます。

> 加藤@川崎です。
>「弊害」を一切考えない、かつ、一度に消すIDが一つと言う条件で昇順にリナ
>ンバリングするのであれば、
>
>begin;
>delete t_hoge where id = 消したいID;
>update t_hoge set id = id - 1 where id > 消したいID;
>select setval('t_hoge_id_seq',(select count(*) from t_hoge));
>commit;
>
>と力業で実行できるかと思います。

以前試したことがあるのですが、これを実行した時って、
update t_hoge set id = id - 1 where id > 消したいID;

正常に動作するときと
エラー(Cannot insert a duplicate key into unique index)になるときがないですか?
プライマリーキーになっていた場合、内部でupdateするレコードの順番によって
idが重複する状態が起こったのだと思うのですが、どうでしょうか?




pgsql-jp メーリングリストの案内